コード例 #1
0
ファイル: models.py プロジェクト: maisie-dev/maisie
    def get(self) -> list:
        """Lists all models that satisfy certain conditions.
        
        Every parameter can be appeneded multiple times.
        :param workspace: search for models only in this workspace
        :param project: search for models only in this project
        :param hyperparam: search for models that have this hyperparameter
        :param param: search for models that have this parameter

        :returns: a list of objects
        """
        parser = paginated_parser.copy()
        parser.add_argument("projects", type=str)

        args = parser.parse_args()

        # Initialize query builder
        query = Model.query

        paginated_query = query.paginate(args["page"], args["per_page"], False)

        return NestedResponse(schema=ModelLesserSchema,
                              many=True,
                              pagination=paginated_query).dump(
                                  paginated_query.items)
コード例 #2
0
    def get(self) -> list:
        parser = paginated_parser.copy()
        args = parser.parse_args()
        paginated_query = Project.query.paginate(args["page"], args["per_page"], False)

        return NestedResponse(
            schema=ProjectSchema, many=True, pagination=paginated_query
        ).dump(paginated_query.items)
コード例 #3
0
ファイル: tags.py プロジェクト: maisie-dev/maisie
 def get(self) -> list:
     parser = paginated_parser.copy()
     args = parser.parse_args()
     # paginated_query = Tag.query.options(db.noload('models')).paginate(args["page"], args["per_page"], False)
     paginated_query = Tag.query.paginate(args["page"], args["per_page"],
                                          False)
     return NestedResponse(schema=TagSchema,
                           exclude=("models", ),
                           many=True,
                           pagination=paginated_query).dump(
                               paginated_query.items)
コード例 #4
0
ファイル: users.py プロジェクト: maisie-dev/maisie
    def get(self) -> list:
        """Lists all users.
        
        .. :quickref: Users; Get a collection of users.

        :return: a list of users
        """
        parser = paginated_parser.copy()
        args = parser.parse_args()

        paginated_query = User.query.paginate(args["page"], args["per_page"],
                                              False)
        return NestedResponse(schema=UserSchema,
                              many=True,
                              pagination=paginated_query).dump(
                                  paginated_query.items)
コード例 #5
0
ファイル: projects.py プロジェクト: maisie-dev/maisie
    def get(self) -> list:
        """Lists all projects.
        
        .. :quickref: Projects; Get a collection of projects.

        :param search: lists only projects that contain the name like `search`
        :return: a list of projects
        """
        parser = paginated_parser.copy()
        args = parser.parse_args()
        paginated_query = Project.query.paginate(args["page"],
                                                 args["per_page"], False)

        return NestedResponse(schema=ProjectSchema,
                              many=True,
                              pagination=paginated_query).dump(
                                  paginated_query.items)
コード例 #6
0
ファイル: models.py プロジェクト: maisie-dev/maisie
    def get(self) -> list:
        """Lists all models that satisfy certain conditions.
        
        .. :quickref: Models; Get a collection of models.

        Every parameter can be appended multiple times.

        :param workspace: search for models only in this workspace
        :param project: search for models only in this project
        :param hyperparam: search for models that have this hyperparameter
        :param param: search for models that have this parameter
        :returns: a list of objects
        """
        parser = paginated_parser.copy()
        parser.add_argument("workspace", type=int)
        parser.add_argument("projects", type=str)
        parser.add_argument("hyperparameters", type=str)
        parser.add_argument("parameters", type=str)
        parser.add_argument("metrics", type=str)
        parser.add_argument("users", type=str)

        args = parser.parse_args()

        # Initialize query builder
        query = Model.query

        if args["workspace"]:
            # TODO: add fetching models from multiple workspaces
            # query = query.filter()
            pass
        if args["projects"]:
            query = query.filter(
                Model.project_id.in_(args["projects"].split(",")))
        if args["users"]:
            query = query.filter(Model.user_id.in_(args["users"].split(",")))
        # if args["hyperparameters"]:
        #     # Filtering through hyperparameters.
        #     # Every result has to contain ALL of the requested keys
        #     query = query.filter(
        #         Model.hyperparameters.has_all(
        #             postgres_array(args["hyperparameters"].split(","))
        #         )
        #     )
        # if args["parameters"]:
        #     # Filtering through parameters.
        #     # Every result has to contain ALL of the requested keys
        #     query = query.filter(
        #         Model.parameters.has_all(postgres_array(args["parameters"].split(",")))
        #     )
        if args["metrics"]:
            # Filtering through metrics.
            # Every result has to contain ALL of the requested keys
            query = query.filter(
                Model.metrics.has_all(
                    postgres_array(args["metrics"].split(","))))

        paginated_query = query.paginate(args["page"], args["per_page"], False)

        return NestedResponse(
            schema=ModelSchema,
            exclude=("parameters", "hyperparameters", "metrics"),
            many=True,
            pagination=paginated_query,
        ).dump(paginated_query.items)