webhook: enable support of extra repo variables as replacement in template url.

This commit is contained in:
Marcin Kuzminski 2017-05-29 23:17:17 +02:00
parent 67377b4a77
commit 2f81e258a7
3 changed files with 18 additions and 4 deletions

View file

@ -16,6 +16,7 @@
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import collections
import logging
from rhodecode.translation import lazy_ugettext
@ -75,9 +76,10 @@ def _commits_as_dict(commit_ids, repos):
urlified_message, issues_data = process_patterns(
cs_data['message'], repo.repo_name)
cs_data['issues'] = issues_data
cs_data['message_html'] = urlify_commit_message(cs_data['message'],
repo.repo_name)
cs_data['message_html_title'] = chop_at_smart(cs_data['message'], '\n', suffix_if_chopped='...')
cs_data['message_html'] = urlify_commit_message(
cs_data['message'], repo.repo_name)
cs_data['message_html_title'] = chop_at_smart(
cs_data['message'], '\n', suffix_if_chopped='...')
commits.append(cs_data)
needed_commits.remove(commit_id)
@ -118,12 +120,17 @@ class RepoEvent(RhodecodeEvent):
def as_dict(self):
from rhodecode.model.repo import RepoModel
data = super(RepoEvent, self).as_dict()
extra_fields = collections.OrderedDict()
for field in self.repo.extra_fields:
extra_fields[field.field_key] = field.field_value
data.update({
'repo': {
'repo_id': self.repo.repo_id,
'repo_name': self.repo.repo_name,
'repo_type': self.repo.repo_type,
'url': RepoModel().get_url(self.repo)
'url': RepoModel().get_url(self.repo),
'extra_fields': extra_fields
}
})
return data

View file

@ -41,6 +41,8 @@ WEBHOOK_URL_VARS = [
'repo_type',
'repo_id',
'repo_url',
# extra repo fields
'extra:<extra_key_name>',
# special attrs below that we handle, using multi-call
'branch',
@ -77,6 +79,10 @@ class WebhookHandler(object):
'username': data['actor']['username'],
'user_id': data['actor']['user_id']
}
extra_vars = {}
for extra_key, extra_val in data['repo']['extra_fields'].items():
extra_vars['extra:{}'.format(extra_key)] = extra_val
common_vars.update(extra_vars)
return string.Template(
self.template_url).safe_substitute(**common_vars)

View file

@ -33,6 +33,7 @@ def base_data():
'repo_type': 'hg',
'repo_id': '12',
'url': 'http://repo.url/foo',
'extra_fields': {},
},
'actor': {
'username': 'actor_name',