##// END OF EJS Templates
api: add option to get pullrequests for get_repo
domruf -
r6594:bf9900e6 default
parent child Browse files
Show More
@@ -588,6 +588,7 b' INPUT::'
588 588 args: {
589 589 "repoid" : "<reponame or repo_id>",
590 590 "with_revision_names": "<bool> = Optional(False)",
591 "with_pullrequests": "<bool> = Optional(False)",
591 592 }
592 593
593 594 OUTPUT::
@@ -672,6 +673,55 b' OUTPUT::'
672 673 "<bookmarkname>": "<raw_id>",
673 674 ...
674 675 },
676 <if with_pullrequests == True>
677 "pull_requests": [
678 {
679 "status": "<pull_request_status>",
680 "pull_request_id": <pull_request_id>,
681 "description": "<pull_request_description>",
682 "title": "<pull_request_title>",
683 "url": "<pull_request_url>",
684 "reviewers": [
685 {
686 "username": "<user_id>",
687 },
688 ...
689 ],
690 "org_repo_url": "<repo_url>",
691 "org_ref_parts": [
692 "<ref_type>",
693 "<ref_name>",
694 "<raw_id>"
695 ],
696 "other_ref_parts": [
697 "<ref_type>",
698 "<ref_name>",
699 "<raw_id>"
700 ],
701 "comments": [
702 {
703 "username": "<user_id>",
704 "text": "<comment text>",
705 "comment_id": "<comment_id>",
706 },
707 ...
708 ],
709 "owner": "<username>",
710 "statuses": [
711 {
712 "status": "<status_of_review>", # "under_review", "approved" or "rejected"
713 "reviewer": "<user_id>",
714 "modified_at": "<date_time_of_review>" # iso 8601 date, server's timezone
715 },
716 ...
717 ],
718 "revisions": [
719 "<raw_id>",
720 ...
721 ]
722 },
723 ...
724 ]
675 725 }
676 726 error: null
677 727
@@ -1126,7 +1126,8 b' class ApiController(JSONRPCController):'
1126 1126
1127 1127 # permission check inside
1128 1128 def get_repo(self, repoid,
1129 with_revision_names=Optional(False)):
1129 with_revision_names=Optional(False),
1130 with_pullrequests=Optional(False)):
1130 1131 """
1131 1132 Gets an existing repository by it's name or repository_id. Members will return
1132 1133 either users_group or user associated to that repository. This command can be
@@ -1227,7 +1228,8 b' class ApiController(JSONRPCController):'
1227 1228 for uf in repo.followers
1228 1229 ]
1229 1230
1230 data = repo.get_api_data(with_revision_names=Optional.extract(with_revision_names))
1231 data = repo.get_api_data(with_revision_names=Optional.extract(with_revision_names),
1232 with_pullrequests=Optional.extract(with_pullrequests))
1231 1233 data['members'] = members
1232 1234 data['followers'] = followers
1233 1235 return data
@@ -1246,10 +1246,11 b' class Repository(Base, BaseDbModel):'
1246 1246
1247 1247 return is_valid_repo(repo_name, cls.base_path())
1248 1248
1249 def get_api_data(self, with_revision_names=False):
1249 def get_api_data(self, with_revision_names=False,
1250 with_pullrequests=False):
1250 1251 """
1251 1252 Common function for generating repo api data.
1252 Optionally, also return tags, branches and bookmarks.
1253 Optionally, also return tags, branches, bookmarks and PRs.
1253 1254 """
1254 1255 repo = self
1255 1256 data = dict(
@@ -1279,6 +1280,8 b' class Repository(Base, BaseDbModel):'
1279 1280 branches=scm_repo.branches,
1280 1281 bookmarks=scm_repo.bookmarks,
1281 1282 ))
1283 if with_pullrequests:
1284 data['pull_requests'] = repo.pull_requests_other
1282 1285 rc_config = Setting.get_app_settings()
1283 1286 repository_fields = str2bool(rc_config.get('repository_fields'))
1284 1287 if repository_fields:
@@ -777,6 +777,7 b' class _BaseTestApi(object):'
777 777 repoid=self.REPO)
778 778 response = api_call(self, params)
779 779 assert u"tags" not in response.json[u'result']
780 assert u'pull_requests' not in response.json[u'result']
780 781
781 782 repo = RepoModel().get_by_repo_name(self.REPO)
782 783 ret = repo.get_api_data()
@@ -808,9 +809,11 b' class _BaseTestApi(object):'
808 809 fixture.destroy_user_group(new_group)
809 810
810 811 id_, params = _build_data(self.apikey, 'get_repo', repoid=self.REPO,
811 with_revision_names=True)
812 with_revision_names=True,
813 with_pullrequests=True)
812 814 response = api_call(self, params)
813 815 assert u"v0.2.0" in response.json[u'result'][u'tags']
816 assert u'pull_requests' in response.json[u'result']
814 817
815 818 @parametrize('grant_perm', [
816 819 ('repository.admin'),
General Comments 0
You need to be logged in to leave comments. Login now