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)
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")
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")
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")