コード例 #1
0
ファイル: manager.py プロジェクト: pomme-abricot/core
    def load(self, name, projectdir=None, **kwargs):
        """
        Load existing project

        :use:
            >>> project1 = project_manager.load('project1')
            >>> project2 = project_manager.load('project2', '/path/to/project') # doctest: +SKIP

        :param name: name of project to load. Must be a string.
        :param projectdir: path of project to load. Must be a path (see module path.py).
                           By default, try to guess with name only.
                           If there are various projects with the same name, return the first.
        :return: Project
        """
        project = None
        if 'proj_path' in kwargs:
            projectdir = kwargs['proj_path']
        elif 'path' in kwargs:
            projectdir = kwargs['path']

        if not projectdir:
            try:
                project = self.item(name)
            except UnknownItemError:
                pass
        else:
            full_path = Path(projectdir) / name
            if full_path.exists():
                project = Project(full_path)
            else:
                print 'Project %s in repository %s does not exist' % (name, projectdir)

        if project:
            self.cproject = project
            return self.cproject
コード例 #2
0
ファイル: manager.py プロジェクト: shiva16/openalea
    def discover(self, config_name='oaproject.cfg'):
        """
        Discover projects from your disk and put them in self.projects.

        Projects are not loaded, only metadata are.

        :use:
            >>> project_manager.discover()
            >>> list_of_projects = project_manager.projects

        To discover new projects, you can add path into *self.repositories*

        .. code-block:: python

            project_manager.repositories.append('path/to/search/projects')
            project_manager.discover()
        """
        projects = {}
        for _path in self.repositories:
            _path = Path(_path)
            if not _path.exists():
                continue
            for p in _path.walkfiles(config_name):
                project = Project(p.parent)
                projects[project.path] = project
        self.projects = projects.values()
コード例 #3
0
ファイル: manager.py プロジェクト: pomme-abricot/core
    def default(self):
        """
        :return: a default empty project
        """
        # TODO: should define a generic "create" method that returns a patched item.
        # for the moment, patch it manually
        _path = self.defaultdir
        proj = Project(_path / "temp")
        proj.label = "Temporary Project"
        if not proj.path.exists():
            txt = '''"""
OpenAlea Lab editor
This temporary script is saved in temporary project in
%s

You can rename/move this project thanks to the button "Save As" in menu.
"""''' % str(proj.path)
            proj.add("model", filename="model.py", content=txt)
            proj.save()

        return proj
コード例 #4
0
ファイル: manager.py プロジェクト: shiva16/openalea
    def default(self):
        """
        :return: a default empty project
        """
        _path = self.defaultdir
        proj = Project(_path / "temp")
        if not proj.path.exists():
            txt = '''"""
OpenAlea Lab editor
This temporary script is saved in temporary project in
%s

You can rename/move this project thanks to the button "Save As" in menu.
"""''' % str(proj.path)
            proj.add("model", filename="model.py", content=txt)
            proj.save()

        return proj
コード例 #5
0
ファイル: manager.py プロジェクト: pomme-abricot/core
    def create(self, name, projectdir=None, **kwargs):
        """
        Create new project and return it.

        :use:
            >>> project1 = project_manager.create('project1')
            >>> project2 = project_manager.create('project2', '/path/to/project')

        :param name: name of project to create (str)
        :param path: path where project will be saved.
                     By default, path is the user path of all projects ($HOME/.openalea/projects/).
        :return: Project
        """
        if projectdir is None:
            projectdir = self.defaultdir
        else:
            projectdir = Path(projectdir).abspath()
            if projectdir not in self.repositories:
                self.repositories.append(projectdir)

        project = Project(projectdir / name, **kwargs)
        self.patch_item(project)

        return project
コード例 #6
0
    def create_projects(self):
        """
        tmp1
          - p1
          - p2
          - link -> p2
        tmp2
          - p1
          - p3
          - link -> p4
        """
        project = Project(self.tmpdir / 'p1', alias="p1")
        project.save()

        project = Project(self.tmpdir / 'p2')
        project.save()

        project.path.symlink(self.tmpdir / 'link')

        project = Project(self.tmpdir2 / 'p1', alias="Project 1")
        project.save()

        project = Project(self.tmpdir2 / 'p3')
        project.save()

        project.path.symlink(self.tmpdir2 / 'link')
コード例 #7
0
    def create_projects(self):
        """
        tmp1
          - p1
          - p2
          - link -> p2
        tmp2
          - p1
          - p3
          - link -> p4
        """
        project = Project(self.tmpdir / 'p1', alias="p1")
        project.save()

        project = Project(self.tmpdir / 'p2')
        project.save()

        if not win:
            project.path.symlink(self.tmpdir / 'link')

        project = Project(self.tmpdir2 / 'p1', alias="Project 1")
        project.save()

        project = Project(self.tmpdir2 / 'p3')
        project.save()

        if not win:
            project.path.symlink(self.tmpdir2 / 'link')