Mercurial > kallithea
changeset 6654:bf9900e6e177
api: add option to get pullrequests for get_repo
author | domruf <dominikruf@gmail.com> |
---|---|
date | Wed, 29 Mar 2017 22:12:50 +0200 |
parents | 98d26beb0965 |
children | 6452215a54ee |
files | docs/api/api.rst kallithea/controllers/api/api.py kallithea/model/db.py kallithea/tests/api/api_base.py |
diffstat | 4 files changed, 63 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/docs/api/api.rst Wed Mar 29 22:10:27 2017 +0200 +++ b/docs/api/api.rst Wed Mar 29 22:12:50 2017 +0200 @@ -588,6 +588,7 @@ args: { "repoid" : "<reponame or repo_id>", "with_revision_names": "<bool> = Optional(False)", + "with_pullrequests": "<bool> = Optional(False)", } OUTPUT:: @@ -672,6 +673,55 @@ "<bookmarkname>": "<raw_id>", ... }, + <if with_pullrequests == True> + "pull_requests": [ + { + "status": "<pull_request_status>", + "pull_request_id": <pull_request_id>, + "description": "<pull_request_description>", + "title": "<pull_request_title>", + "url": "<pull_request_url>", + "reviewers": [ + { + "username": "<user_id>", + }, + ... + ], + "org_repo_url": "<repo_url>", + "org_ref_parts": [ + "<ref_type>", + "<ref_name>", + "<raw_id>" + ], + "other_ref_parts": [ + "<ref_type>", + "<ref_name>", + "<raw_id>" + ], + "comments": [ + { + "username": "<user_id>", + "text": "<comment text>", + "comment_id": "<comment_id>", + }, + ... + ], + "owner": "<username>", + "statuses": [ + { + "status": "<status_of_review>", # "under_review", "approved" or "rejected" + "reviewer": "<user_id>", + "modified_at": "<date_time_of_review>" # iso 8601 date, server's timezone + }, + ... + ], + "revisions": [ + "<raw_id>", + ... + ] + }, + ... + ] } error: null
--- a/kallithea/controllers/api/api.py Wed Mar 29 22:10:27 2017 +0200 +++ b/kallithea/controllers/api/api.py Wed Mar 29 22:12:50 2017 +0200 @@ -1126,7 +1126,8 @@ # permission check inside def get_repo(self, repoid, - with_revision_names=Optional(False)): + with_revision_names=Optional(False), + with_pullrequests=Optional(False)): """ Gets an existing repository by it's name or repository_id. Members will return either users_group or user associated to that repository. This command can be @@ -1227,7 +1228,8 @@ for uf in repo.followers ] - data = repo.get_api_data(with_revision_names=Optional.extract(with_revision_names)) + data = repo.get_api_data(with_revision_names=Optional.extract(with_revision_names), + with_pullrequests=Optional.extract(with_pullrequests)) data['members'] = members data['followers'] = followers return data
--- a/kallithea/model/db.py Wed Mar 29 22:10:27 2017 +0200 +++ b/kallithea/model/db.py Wed Mar 29 22:12:50 2017 +0200 @@ -1246,10 +1246,11 @@ return is_valid_repo(repo_name, cls.base_path()) - def get_api_data(self, with_revision_names=False): + def get_api_data(self, with_revision_names=False, + with_pullrequests=False): """ Common function for generating repo api data. - Optionally, also return tags, branches and bookmarks. + Optionally, also return tags, branches, bookmarks and PRs. """ repo = self data = dict( @@ -1279,6 +1280,8 @@ branches=scm_repo.branches, bookmarks=scm_repo.bookmarks, )) + if with_pullrequests: + data['pull_requests'] = repo.pull_requests_other rc_config = Setting.get_app_settings() repository_fields = str2bool(rc_config.get('repository_fields')) if repository_fields:
--- a/kallithea/tests/api/api_base.py Wed Mar 29 22:10:27 2017 +0200 +++ b/kallithea/tests/api/api_base.py Wed Mar 29 22:12:50 2017 +0200 @@ -777,6 +777,7 @@ repoid=self.REPO) response = api_call(self, params) assert u"tags" not in response.json[u'result'] + assert u'pull_requests' not in response.json[u'result'] repo = RepoModel().get_by_repo_name(self.REPO) ret = repo.get_api_data() @@ -808,9 +809,11 @@ fixture.destroy_user_group(new_group) id_, params = _build_data(self.apikey, 'get_repo', repoid=self.REPO, - with_revision_names=True) + with_revision_names=True, + with_pullrequests=True) response = api_call(self, params) assert u"v0.2.0" in response.json[u'result'][u'tags'] + assert u'pull_requests' in response.json[u'result'] @parametrize('grant_perm', [ ('repository.admin'),