diff --git a/rhodecode/api/views/pull_request_api.py b/rhodecode/api/views/pull_request_api.py --- a/rhodecode/api/views/pull_request_api.py +++ b/rhodecode/api/views/pull_request_api.py @@ -96,6 +96,9 @@ def get_pull_request(request, apiuser, r "commit_id": "", } }, + "shadow": { + "clone_url": "", + }, "author": , "reviewers": [ ... @@ -178,6 +181,9 @@ def get_pull_requests(request, apiuser, "commit_id": "", } }, + "shadow": { + "clone_url": "", + }, "author": , "reviewers": [ ... diff --git a/rhodecode/lib/middleware/simplevcs.py b/rhodecode/lib/middleware/simplevcs.py --- a/rhodecode/lib/middleware/simplevcs.py +++ b/rhodecode/lib/middleware/simplevcs.py @@ -110,6 +110,9 @@ class SimpleVCS(object): This will populate the attributes acl_repo_name, url_repo_name, vcs_repo_name and pr_id on the current instance. """ + # TODO: martinb: Unify generation/suffix of clone url. It is currently + # used here in the regex, in PullRequest in get_api_data() and + # indirectly in routing configuration. # TODO: martinb: Move to class or module scope. # TODO: martinb: Check if we have to use re.UNICODE. # TODO: martinb: Check which chars are allowed for repo/group names. diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -3109,11 +3109,12 @@ class PullRequest(Base, _PullRequestBase from rhodecode.model.pull_request import PullRequestModel pull_request = self merge_status = PullRequestModel().merge_status(pull_request) + pull_request_url = url( + 'pullrequest_show', repo_name=self.target_repo.repo_name, + pull_request_id=self.pull_request_id, qualified=True) data = { 'pull_request_id': pull_request.pull_request_id, - 'url': url('pullrequest_show', repo_name=self.target_repo.repo_name, - pull_request_id=self.pull_request_id, - qualified=True), + 'url': pull_request_url, 'title': pull_request.title, 'description': pull_request.description, 'status': pull_request.status, @@ -3143,6 +3144,10 @@ class PullRequest(Base, _PullRequestBase 'commit_id': pull_request.target_ref_parts.commit_id, }, }, + 'shadow': { + # TODO: martinb: Unify generation/suffix of clone url. + 'clone_url': '{}/repository'.format(pull_request_url), + }, 'author': pull_request.author.get_api_data(include_secrets=False, details='basic'), 'reviewers': [