Esempio n. 1
0
	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)
Esempio n. 2
0
    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)
Esempio n. 3
0
	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
Esempio n. 4
0
    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()
Esempio n. 5
0
	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()
Esempio n. 6
0
    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
Esempio n. 7
0
    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
Esempio n. 8
0
	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
Esempio n. 9
0
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)
Esempio n. 10
0
	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