コード例 #1
0
class ProjectFacade:
    def __init__(self):
        self.project_service = ProjectService()
        self.user_service = UserService()
        self.project_dao = CaseDAO()

    @staticmethod
    def retrieve_logged_user_projects(logged_user_id):
        projects = ProjectService.retrieve_all_user_projects(user_id=logged_user_id)
        return [ProjectDto(project) for project in projects]

    def create_project(self, logged_user, project_name, project_description):
        self.project_service.store_project(logged_user, True, None, name=project_name,
                                           description=project_description)

    def get_datatypes_in_project(self, project_gid):
        try:
            project = self.project_service.find_project_lazy_by_gid(project_gid)
        except ProjectServiceException:
            raise InvalidIdentifierException()

        datatypes = self.project_service.get_datatypes_in_project(project.id)
        return [DataTypeDto(datatype) for datatype in datatypes]

    def get_project_operations(self, project_gid, page_number):
        try:
            project = self.project_service.find_project_lazy_by_gid(project_gid)
        except ProjectServiceException:
            raise InvalidIdentifierException()

        _, _, operations, pages = self.project_service.retrieve_project_full(project.id, current_page=int(page_number))
        return [OperationDto(operation) for operation in operations], pages

    def add_members_to_project(self, current_user_id, project_gid, new_members_gid):
        try:
            project = self.project_service.find_project_lazy_by_gid(project_gid)
        except Exception:
            raise InvalidIdentifierException("Invalid project identifier.")

        if current_user_id != project.fk_admin:
            raise AuthorizationRequestException("Your are not allowed to edit given project")

        new_members_id = []
        for gid in new_members_gid:
            user = self.user_service.get_user_by_gid(gid)
            if user is None:
                raise InvalidInputException("Invalid user gid {}".format(gid))
            new_members_id.append(user.id)
        self.project_dao.add_members_to_project(project.id, new_members_id)
コード例 #2
0
ファイル: project_resource.py プロジェクト: piperod/tvb-root
class GetDataInProjectResource(RestResource):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.project_service = ProjectService()

    def get(self, project_gid):
        """
        :return a list of DataType instances (subclasses) associated with the current project
        """
        try:
            project = self.project_service.find_project_lazy_by_gid(
                project_gid)
        except ProjectServiceException:
            raise InvalidIdentifierException(INVALID_PROJECT_GID_MESSAGE %
                                             project_gid)

        datatypes = self.project_service.get_datatypes_in_project(project.id)
        return [DataTypeDto(datatype) for datatype in datatypes]