diff --git a/rhodecode/events/repo.py b/rhodecode/events/repo.py --- a/rhodecode/events/repo.py +++ b/rhodecode/events/repo.py @@ -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 diff --git a/rhodecode/integrations/types/webhook.py b/rhodecode/integrations/types/webhook.py --- a/rhodecode/integrations/types/webhook.py +++ b/rhodecode/integrations/types/webhook.py @@ -41,6 +41,8 @@ WEBHOOK_URL_VARS = [ 'repo_type', 'repo_id', 'repo_url', + # extra repo fields + 'extra:', # 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) diff --git a/rhodecode/tests/integrations/test_webhook.py b/rhodecode/tests/integrations/test_webhook.py --- a/rhodecode/tests/integrations/test_webhook.py +++ b/rhodecode/tests/integrations/test_webhook.py @@ -33,6 +33,7 @@ def base_data(): 'repo_type': 'hg', 'repo_id': '12', 'url': 'http://repo.url/foo', + 'extra_fields': {}, }, 'actor': { 'username': 'actor_name',