Ejemplo n.º 1
0
    def test_project_get_one_with_builds(self, f_users, f_mock_chroots,
                                         f_coprs, f_builds, f_db):

        p_id_list = [p.id for p in self.basic_coprs_list]
        for p_id in p_id_list:
            href = "/api_2/projects/{}?show_builds=True".format(p_id)
            r = self.tc.get(href)
            assert r.status_code == 200
            obj = json.loads(r.data.decode("utf-8"))

            assert obj["project"]["id"] == p_id
            assert obj["_links"]["self"]["href"] == href
            project = CoprsLogic.get_by_id(p_id).one()
            builds = BuildsLogic.get_multiple_by_copr(project).all()
            assert len(obj["project_builds"]) == len(builds)
Ejemplo n.º 2
0
    def test_project_get_one_with_builds(
            self, f_users, f_mock_chroots,
            f_coprs, f_builds, f_db):

        p_id_list = [p.id for p in self.basic_coprs_list]
        for p_id in p_id_list:
            href = "/api_2/projects/{}?show_builds=True".format(p_id)
            r = self.tc.get(href)
            assert r.status_code == 200
            obj = json.loads(r.data.decode("utf-8"))

            assert obj["project"]["id"] == p_id
            assert obj["_links"]["self"]["href"] == href
            project = CoprsLogic.get_by_id(p_id).one()
            builds = BuildsLogic.get_multiple_by_copr(project).all()
            assert len(obj["project_builds"]) == len(builds)
Ejemplo n.º 3
0
def get_build_list(ownername, projectname, packagename=None, status=None, **kwargs):
    copr = get_copr(ownername, projectname)
    query = BuildsLogic.get_multiple_by_copr(copr)
    if packagename:
        query = BuildsLogic.filter_by_package_name(query, packagename)

    # WORKAROUND
    # We can't filter builds by status directly in the database, because we
    # use a logic in Build.status property to determine a build status.
    # Therefore if we want to filter by `status`, we need to query all builds
    # and filter them in the application and then return the desired number.
    limit = kwargs["limit"]
    paginator_limit = None if status else kwargs["limit"]
    del kwargs["limit"]

    paginator = Paginator(query, models.Build, limit=paginator_limit, **kwargs)
    builds = paginator.map(to_dict)

    if status:
        builds = [b for b in builds if b["state"] == status][:limit]
        paginator.limit = limit

    return flask.jsonify(items=builds, meta=paginator.meta)