pull-request-events: expose pr title and uid for commits inside.

- used mostly for jenkins integration functions
This commit is contained in:
Marcin Kuzminski 2018-02-16 19:22:21 +01:00
parent 4140f7b4eb
commit 407c0ea407
3 changed files with 14 additions and 1 deletions

View file

@ -37,6 +37,7 @@ class PullRequestEvent(RepoEvent):
self.pullrequest = pullrequest
def as_dict(self):
from rhodecode.lib.utils2 import md5_safe
from rhodecode.model.pull_request import PullRequestModel
data = super(PullRequestEvent, self).as_dict()
@ -46,6 +47,9 @@ class PullRequestEvent(RepoEvent):
repos=[self.pullrequest.source_repo]
)
issues = _issues_as_dict(commits)
# calculate hashes of all commits for unique identifier of commits
# inside that pull request
commits_hash = md5_safe(':'.join(x.get('raw_id', '') for x in commits))
data.update({
'pullrequest': {
@ -59,6 +63,7 @@ class PullRequestEvent(RepoEvent):
'shadow_url': PullRequestModel().get_shadow_clone_url(
self.pullrequest, request=self.request),
'status': self.pullrequest.calculated_review_status(),
'commits_uid': commits_hash,
'commits': commits,
}
})

View file

@ -135,8 +135,11 @@ WEBHOOK_URL_VARS = [
# pr events vars
('pull_request_id', 'Unique ID of the pull request.'),
('pull_request_title', 'Title of the pull request.'),
('pull_request_url', 'Pull request url.'),
('pull_request_shadow_url', 'Pull request shadow repo clone url.'),
('pull_request_commits_uid', 'Calculated UID of all commits inside the PR. '
'Changes after PR update'),
# user who triggers the call
('username', 'User who triggered the call.'),
@ -244,8 +247,11 @@ class WebhookDataHandler(object):
'register %s call(%s) to url %s', self.name, event, url)
url = string.Template(url).safe_substitute(
pull_request_id=data['pullrequest']['pull_request_id'],
pull_request_title=data['pullrequest']['title'],
pull_request_url=data['pullrequest']['url'],
pull_request_shadow_url=data['pullrequest']['shadow_url'],)
pull_request_shadow_url=data['pullrequest']['shadow_url'],
pull_request_commits_uid=data['pullrequest']['commits_uid'],
)
return [(url, self.headers, data)]
def __call__(self, event, data):

View file

@ -86,6 +86,8 @@ def test_webook_parse_url_for_pull_request_event(
base_data['pullrequest'] = {
'pull_request_id': 999,
'url': 'http://pr-url.com',
'title': 'example-pr-title',
'commits_uid': 'abcdefg1234',
'shadow_url': 'http://pr-url.com/repository'
}
headers = {'exmaple-header': 'header-values'}