--- coprs_frontend/coprs/logic/coprs_logic.py | 6 ++++++ coprs_frontend/coprs/views/api_ns/api_general.py | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py index 77599c5..5129a82 100644 --- a/coprs_frontend/coprs/logic/coprs_logic.py +++ b/coprs_frontend/coprs/logic/coprs_logic.py @@ -41,6 +41,7 @@ class CoprsLogic(object): user_relation = kwargs.get('user_relation', None) username = kwargs.get('username', None) with_mock_chroots = kwargs.get('with_mock_chroots', None) + with_builds = kwargs.get('with_builds', None) incl_deleted = kwargs.get('incl_deleted', None) ids = kwargs.get('ids', None)
@@ -70,6 +71,11 @@ class CoprsLogic(object): order_by(models.MockChroot.os_version.asc()).\ order_by(models.MockChroot.arch.asc())
+ if with_builds: + query = query.outerjoin(models.Copr.builds).\ + options(db.contains_eager(models.Copr.builds)).\ + order_by(models.Build.submitted_on.desc()) + return query
@classmethod diff --git a/coprs_frontend/coprs/views/api_ns/api_general.py b/coprs_frontend/coprs/views/api_ns/api_general.py index 8d42745..97e4c03 100644 --- a/coprs_frontend/coprs/views/api_ns/api_general.py +++ b/coprs_frontend/coprs/views/api_ns/api_general.py @@ -3,6 +3,7 @@ import time
import base64 import flask +import urlparse
from coprs import db from coprs import exceptions @@ -116,12 +117,21 @@ def api_coprs_by_owner(username=None): httpcode = 200 if username: query = coprs_logic.CoprsLogic.get_multiple(flask.g.user, - user_relation='owned', username=username) + user_relation='owned', username=username, with_builds=True) repos = query.all() output = {'output': 'ok', 'repos': []} for repo in repos: + yum_repos = {} + for build in repo.builds: + if build.results: + for chroot in repo.active_mock_chroots: + release = '{chroot.os_release}-{chroot.os_version}-{chroot.arch}'.format(chroot=chroot) + yum_repos[release] = urlparse.urljoin(build.results, release + '/') + break + output['repos'].append({'name': repo.name, - 'repos': repo.repos, + 'additional_repos': repo.repos, + 'yum_repos': yum_repos, 'description': repo.description, 'instructions': repo.instructions}) else: @@ -132,7 +142,6 @@ def api_coprs_by_owner(username=None): jsonout.status_code = httpcode return jsonout
- @api_ns.route('/coprs/<username>/<coprname>/new_build/', methods=["POST"]) @api_login_required def copr_new_build(username, coprname):