def loadFiles(request):

    if not request.user.is_authenticated(): 
        return JsonError('readOnly User')

    if request.method != 'POST':
        return JsonError( 'invalid message' ) 

    from django.conf import settings
    import os 

    fileroot = request.user.__str__() + datetime.datetime.now().strftime("_%y%m%d%H%M%S_")

    actionFiles = {}
    try:     
        for key, fileObj in request.FILES.items():
            
            path = os.path.join(settings.MEDIA_ROOT, fileroot + fileObj.name ) 
            actionFiles[ key ] = path 
            
            dest = open(path, 'w')
            if fileObj.multiple_chunks:
                for c in fileObj.chunks():
                    dest.write(c)
            else:
                dest.write(fileObj.read())
            dest.close()
            
        request.POST[ "actionFiles" ] = actionFiles
        
    except: 
        return JsonError( 'fileLoad error: ' + fileObj.name  )


    return protoExecuteAction(request)
Exemple #2
0
def getModeleRaccordement(request):
    """ return all tables from project
    """
    modelID = request.GET['modelID']
    selectedModels = []

    try:
        model = ModeleRaccordement.objects.get(id=modelID)
        
        selectedModels.append({'id':model.mod_modrac1.id, 'modelName':model.mod_modrac1.nom_modele, 'attributes':getAttributesFromModel(model.mod_modrac1)})
        selectedModels.append({'id':model.mod_modrac2.id, 'modelName':model.mod_modrac2.nom_modele, 'attributes':getAttributesFromModel(model.mod_modrac2)})

        raccordements = appendRaccordementsFromModel(model)
        selectedModels.append({'id':model.id, 'nomModele':model.nom_modele_raccordement, 'raccordements':raccordements})
        
    except Exception as e:
        print(e)
        return JsonError("Entity non trouvé")

    jsondict = {
        'success':True,
        'message': '',
        'models': selectedModels,
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")
def getDefaultDiagram(request):
    projectID = request.GET['projectID']
    user = request.user
    try:
        project = Project.objects.get(id=projectID)
        diagrams = Diagram.objects.filter(project_id=projectID)
        if not diagrams:
            diagram, created = Diagram.objects.get_or_create(
                project=project,
                code='default',
                smOwningTeam=project.smOwningTeam)
            diagram.smOwningUser = user
            diagram.smCreatedBy = user
            diagram.save()
        else:
            diagram = diagrams[0]
    except Exception as e:
        return JsonError(e)

    jsonDiagram = diagram.info
    if isinstance(jsonDiagram, dict):
        jsonDiagram = json.dumps(jsonDiagram, cls=JSONEncoder)

    jsondict = {
        'success': True,
        'message': '',
        'diagramID': diagram.id,
        'diagramCode': diagram.code,
        'diagram': jsonDiagram,
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")
def getEntitiesJSONDiagram(request):
    """ return all tables from project
    """
    projectID = request.POST['projectID']
    selectedTables = []

    try:
        entities = Entity.objects.filter(model__project_id=projectID)
        table = {}
        for entity in entities:
            table = {
                'id': str(uuid.UUID(entity.smUUID)),
                'tableName': entity.code
            }

            selectedTables.append(table)

    except Exception as e:
        print(e)
        return JsonError("Entity non trouvé")

    jsondict = {
        'success': True,
        'message': '',
        'tables': selectedTables,
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")
def getFile(request, path):

    if not request.user.is_authenticated():
        return JsonError('readOnly User')

    fullpath = getFullPath(request, path)
    if not os.path.exists(fullpath):
        return JsonError('"%s" does not exist' % path)

    # Respect the If-Modified-Since header.
    statobj = os.stat(fullpath)
    mimetype, encoding = mimetypes.guess_type(fullpath)
    mimetype = mimetype or 'application/octet-stream'

    response = HttpResponse(open(fullpath, 'rb').read(), content_type=mimetype)
    response["Last-Modified"] = http_date(statobj.st_mtime)
    response["Content-Length"] = statobj.st_size
    if encoding:
        response["Content-Encoding"] = encoding

    return response
def deleteDiagram(request):
    attributes = ast.literal_eval(request.POST['diagrams'])
    try:
        diagram = Diagram.objects.get(id=attributes['id'])
        diagram.delete()
    except Exception as e:
        return JsonError(e)

    jsondict = {
        'success': True,
        'message': 'Diagram deleted',
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")
Exemple #7
0
def saveRaccordement(modelId, sourceId, targetId, user):
    try:
        model = ModeleRaccordement.objects.get(id=modelId)
        source = ElementDonnee.objects.get(id=sourceId)
        target = ElementDonnee.objects.get(id=targetId)
        raccordement = Raccordement.objects.create(smOwningTeam=model.smOwningTeam,smOwningUser=user,smCreatedBy=user)
        raccordement.smModifiedBy = user
        raccordement.smCreatedOn = datetime.now()
        raccordement.smModifiedOn = datetime.now()
        raccordement.modrac_rac = model
        raccordement.eledon_rac1 = source
        raccordement.eledon_rac2 = target
        raccordement.save()
    except Exception as e:
        return JsonError(e)
def openDiagram(request):
    diagramID = request.GET['diagramID']
    try:
        diagram = Diagram.objects.get(id=diagramID)
    except Exception as e:
        return JsonError(e)

    jsonDiagram = diagram.info
    if isinstance(jsonDiagram, dict):
        jsonDiagram = json.dumps(jsonDiagram, cls=JSONEncoder)

    jsondict = {
        'success': True,
        'message': '',
        'diagramID': diagram.id,
        'diagramCode': diagram.code,
        'diagram': jsonDiagram,
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")
def saveDiagram(request):
    diagramID = request.GET['diagramID']

    jsonFile = json.loads(request.body)
    jsonString = JSONEncoder().encode(jsonFile)
    jsonString = '{"objects":' + jsonString + '}'

    try:
        diagram = Diagram.objects.get(id=diagramID)
        diagram.info = jsonString
        diagram.save()

    except Exception as e:
        return JsonError(e)

    saveDiagramEntity(jsonFile, diagram, request.user)
    jsondict = {
        'success': True,
        'message': 'Diagram saved',
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")
def createDiagram(request):
    attributes = ast.literal_eval(request.POST['diagrams'])
    user = request.user
    code = attributes['code']
    projectID = attributes['projectID']
    try:
        project = Project.objects.get(id=projectID)
        diagram = Diagram.objects.create(project=project,
                                         code=code,
                                         smOwningTeam=project.smOwningTeam,
                                         smOwningUser=user,
                                         smCreatedBy=user)
    except Exception as e:
        return JsonError(e)

    jsondict = {
        'success': True,
        'message': 'Diagram created',
        'diagramID': diagram.id,
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")
def synchDiagramFromDB(request):
    """ Updates diagram objects from database
    """
    projectID = request.POST['projectID']
    selectedTables = []
    connectors = []

    try:
        entities = Entity.objects.filter(model__project_id=projectID)
        assembler = JSONAssembler()
        assembler.getJSONElements(entities, selectedTables, connectors)

    except Exception as e:
        print(e)
        return JsonError("Entity non trouvé")

    jsondict = {
        'success': True,
        'message': '',
        'tables': selectedTables,
        'connectors': connectors,
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")
Exemple #12
0
def deleteRaccordementById(raccordementId):
    try:
        raccordement = Raccordement.objects.get(id=raccordementId)
        raccordement.delete()
    except Exception as e:
        return JsonError(e)
def synchDBFromDiagram(request):
    """ Create and synchronize elements in database
    """
    projectID = request.GET['projectID']
    try:
        project = Project.objects.get(id=projectID)
        user = request.user

        model = Model.objects.filter(project=project)
        if not model:
            model = Model.objects.create(project=project,
                                         code='default',
                                         smOwningTeam=project.smOwningTeam,
                                         smCreatedBy=user,
                                         smOwningUser=user)
        else:
            model = model[0]

        owningTeam = model.smOwningTeam
    except Exception as e:
        return JsonError(e)

    objects = json.loads(request.body)
    deletedConnectors = []
    UUIDList = []
    for element in objects:
        elementUUID = uuid.UUID(element['id']).hex
        if element['type'] == 'dbModel.shape.DBTable':
            UUIDList.append(elementUUID)
            addOrUpdateEntity(model, user, owningTeam, deletedConnectors,
                              element, elementUUID)
        else:
            if elementUUID not in deletedConnectors:
                sourceUUID = uuid.UUID(element['source']['node']).hex
                targetUUID = uuid.UUID(element['target']['node']).hex
                try:
                    refEntity = Entity.objects.get(smUUID=sourceUUID)
                    connEntity = Entity.objects.get(smUUID=targetUUID)
                except Exception as e:
                    return JsonError(e)

                addOrUpdateConnector(element, elementUUID, refEntity,
                                     connEntity)

    # Return the updated JSON model
    selectedTables = []
    connectors = []
    try:
        entities = Entity.objects.filter(smUUID__in=UUIDList)
        assembler = JSONAssembler()
        assembler.getJSONElements(entities, selectedTables, connectors)

    except Exception as e:
        print(e)
        return JsonError("Entity non trouvé")

    jsondict = {
        'success': True,
        'message': '',
        'tables': selectedTables,
        'connectors': connectors,
    }
    context = json.dumps(jsondict)
    return HttpResponse(context, content_type="application/json")