def copyFolder(self, request): folder_id = str(request.POST['id']) if Project.objects.filter(user=request.user, id=folder_id).exists(): folder = Project.objects.get(user=request.user, id=folder_id) new_folder = Project(user=request.user, name=(str(folder.name) + " (Copy)")) copyProject(folder, new_folder)
def __newProject(self, request): folder_name = str(request.POST['project_name']) if not Project.objects.filter(user=request.user, name=folder_name).exists(): self.project = Project(user=request.user, name=folder_name) self.project.save() self.project_id = self.project.id self.project_name = self.project.name request.session['project_id'] = self.project_id os.mkdir(os.path.join(settings.MEDIA_ROOT, str(self.project.id))) os.mkdir( os.path.join(settings.MEDIA_ROOT, str(self.project.id), "optimizations")) else: self.createFolderShow = True self.createFolderError = "Project %s already exists !" % folder_name self.__loadProjects(request)
def saveProject(self, request): if 'modal_project_name' in request.POST: if 'modal_project_id' in request.POST and request.POST['modal_project_id'] != "": id = request.POST['modal_project_id'] name = request.POST['modal_project_name'] access = False if 'modal_project_access' in request.POST and request.POST['modal_project_access'] == "on": access = True if Project.objects.filter(id=id).exists(): project = Project.objects.get(id=id) project.name = name if access: project.access = 'PU' else: project.access = 'PR' project.save() else: name = str(request.POST['modal_project_name']) access = False if 'modal_project_access' in request.POST and request.POST['modal_project_access'] == "on": access = True if not Project.objects.filter(user=request.user, name=name).exists(): new_folder = Project(user=request.user, name=name) if access: new_folder.access = 'PU' else: new_folder.access = 'PR' new_folder.save() mkdir(join(settings.MEDIA_ROOT, str(new_folder.folder))) self.loadFolders(request) else: self.createFolderShow = True self.createFolderError = "Project %s already exists !" % name
def loadFolder(self, request): if 'combine_file' in request.FILES: try: new_folder = Project(user=request.user) archive = request.FILES['combine_file'] path = join(settings.MEDIA_ROOT, str(archive)) if exists(path): remove(path) t_content_file = open(path, "wb") t_content_file.write(archive.read()) t_content_file.close() importProject(new_folder, path) except Exception as e: if isfile(path): remove(path) new_folder.save()
def sendFolder(self, request): folder_id = str(request.POST['modal_send_project_id']) t_username = str(request.POST['modal_send_project_username']) try: t_user = User.objects.get(username=t_username) if Project.objects.filter(user=request.user, id=folder_id).exists(): folder = Project.objects.get(user=request.user, id=folder_id) new_folder = Project(user=t_user, name=str(folder.name)) copyProject(folder, new_folder) except User.DoesNotExist: self.sendFolderShow = True self.sendFolderError = "Username %s does not exist" % t_username
def saveProject(self, request): if 'modal_project_name' in request.POST: if 'modal_project_id' in request.POST and request.POST[ 'modal_project_id'] != "": id = request.POST['modal_project_id'] name = request.POST['modal_project_name'] access = False if 'modal_project_access' in request.POST and request.POST[ 'modal_project_access'] == "on": access = True if Project.objects.filter(id=id).exists(): project = Project.objects.get(id=id) project.name = name if access: project.access = 'PU' else: project.access = 'PR' project.save() else: name = str(request.POST['modal_project_name']) access = False if 'modal_project_access' in request.POST and request.POST[ 'modal_project_access'] == "on": access = True if not Project.objects.filter(user=request.user, name=name).exists(): new_folder = Project(user=request.user, name=name) if access: new_folder.access = 'PU' else: new_folder.access = 'PR' new_folder.save() mkdir(join(settings.MEDIA_ROOT, str(new_folder.folder))) self.loadFolders(request) else: self.createFolderShow = True self.createFolderError = "Project %s already exists !" % name
def newFolder(self, request): name = str(request.POST['project_name']) access = False if 'project_access' in request.POST and request.POST['project_access'] == "on": access = True if not Project.objects.filter(user=request.user, name=name).exists(): new_folder = Project(user=request.user, name=name) if access: new_folder.access = 'PU' else: new_folder.access = 'PR' new_folder.save() mkdir(join(settings.MEDIA_ROOT, str(new_folder.folder))) self.loadFolders(request) else: self.createFolderShow = True self.createFolderError = "Project %s already exists !" % name
class HasWorkingProject(HasUserLoggedIn): def __init__(self): HasUserLoggedIn.__init__(self) self.listOfProjects = None self.project = None self.project_id = None self.project_name = None def get_context_data(self, **kwargs): kwargs['projects'] = self.listOfProjects kwargs['project_id'] = self.project_id kwargs['project_name'] = self.project_name return kwargs def load(self, request, *args, **kwargs): self.__loadProjects(request) self.__loadProject(request, *args) def isChooseProject(self, request): if request.POST['action'] == "choose_project": self.__setProject(request) return True elif request.POST['action'] == "new_project": self.__newProject(request) return True else: return False def isProjectLoaded(self): return (self.project_id != None and self.project != None) def setProject(self, request, project_folder): if Project.objects.filter(folder=str(project_folder)).exists(): t_project = Project.objects.get(folder=str(project_folder)) if t_project.user == request.user or t_project.access == Project.PUBLIC: self.project_id = t_project.id request.session['project_id'] = self.project_id self.__loadProject(request) # If a model was selected, we forget it if request.session.get('model_id') is not None: del request.session['model_id'] if request.session.get('model_submodel') is not None: del request.session['model_submodel'] def unsetProject(self, request): self.project_id = None self.project_name = None self.project = None del request.session['project_id'] def __newProject(self, request): folder_name = str(request.POST['project_name']) if not Project.objects.filter(user=request.user, name=folder_name).exists(): self.project = Project(user=request.user, name=folder_name) self.project.save() self.project_id = self.project.id self.project_name = self.project.name request.session['project_id'] = self.project_id os.mkdir(os.path.join(settings.MEDIA_ROOT, str(self.project.id))) os.mkdir( os.path.join(settings.MEDIA_ROOT, str(self.project.id), "optimizations")) else: self.createFolderShow = True self.createFolderError = "Project %s already exists !" % folder_name self.__loadProjects(request) def __setProject(self, request): t_project_id = self.listOfProjects[int( request.POST['project_id'])].folder self.setProject(request, t_project_id) def __loadProject(self, request, *args): if request.session.get('project_id') is not None: self.project_id = int(request.session['project_id']) if self.project_id is not None and Project.objects.filter( id=self.project_id).exists(): self.project = Project.objects.get(id=self.project_id) self.project_name = self.project.name def __loadProjects(self, request): if self.isUserLoggedIn(request): self.listOfProjects = ( Project.objects.filter(user=request.user) | Project.objects.filter(access=Project.PUBLIC)) else: self.listOfProjects = Project.objects.filter(access=Project.PUBLIC) def getProjectFolder(self): if self.project is not None: return os.path.join(settings.MEDIA_ROOT, str(self.project.folder)) def getProjectModels(self, request): if self.isUserLoggedIn(request) and self.project is not None: return SbmlModel.objects.filter(project=self.project)
def loadFolder(self, request): self.fileUploadForm = DocumentForm(request.POST, request.FILES) if self.fileUploadForm.is_valid(): new_folder = Project(user=request.user) new_folder.save() mkdir(join(settings.MEDIA_ROOT, str(new_folder.folder))) new_archive = CombineArchiveModel(project=new_folder, archive_file=request.FILES['docfile']) new_archive.save() new_combine_archive = CombineArchive() filename = join(settings.MEDIA_ROOT, str(new_archive.archive_file)) t_name = basename(str(new_archive.archive_file)) new_folder.name = t_name.split('.')[0] new_folder.save() try: new_combine_archive.readArchive(filename) for sbml_file in new_combine_archive.getAllSbmls(): t_file = File(open(sbml_file, 'r')) sbml_model = SbmlModel(project=new_folder, sbml_file=t_file) sbml_model.save() try: doc = SbmlDocument() doc.readSbmlFromFile(join(settings.MEDIA_ROOT, str(sbml_model.sbml_file))) sbml_model.name = doc.model.getName() sbml_model.save() except ModelException: name = splitext(str(sbml_model.sbml_file))[0] sbml_model.name = name sbml_model.save() for sedml_filename in new_combine_archive.getAllSedmls(): sedml_archive = SEDMLSimulation(project=new_folder, sedml_file=File(open(sedml_filename, 'r'))) sedml_archive.name = basename(sedml_filename).split('.')[0] sedml_archive.save() # Now everything is in the same folder sedml_doc = SedmlDocument() sedml_doc.readSedmlFromFile(join(settings.MEDIA_ROOT, str(sedml_archive.sedml_file))) sedml_doc.listOfModels.removePaths() sbml_files = sedml_doc.listOfModels.makeLocalSources() for sbml_file in sbml_files: if len(SbmlModel.objects.filter(project=new_folder, sbml_file=join(join(str(new_folder.folder), "models"), basename(sbml_file)))) == 0: t_file = File(open(sbml_file, 'r')) sbml_model = SbmlModel(project=new_folder, sbml_file=t_file) sbml_model.save() try: doc = SbmlDocument() doc.readSbmlFromFile(join(settings.MEDIA_ROOT, str(sbml_model.sbml_file))) sbml_model.name = doc.model.getName() sbml_model.save() except ModelException: name = splitext(str(sbml_model.sbml_file))[0] sbml_model.name = name sbml_model.save() sedml_doc.writeSedmlToFile(join(settings.MEDIA_ROOT, str(sedml_archive.sedml_file))) except CombineException as e: print e.message