webhooks: Replace SUBJECT_WITH_* with TOPIC_WITH_*.

This commit is contained in:
Steve Howell 2018-11-09 19:59:15 +00:00 committed by Tim Abbott
parent ced4d81856
commit ea98a44db3
8 changed files with 29 additions and 30 deletions

View File

@ -47,7 +47,6 @@ FILES_WITH_LEGACY_SUBJECT = {
'zerver/lib/onboarding.py', 'zerver/lib/onboarding.py',
'zerver/lib/stream_topic.py', 'zerver/lib/stream_topic.py',
'zerver/lib/url_encoding.py', 'zerver/lib/url_encoding.py',
'zerver/lib/webhooks/git.py',
} }
def custom_check_file(fn, identifier, rules, color, skip_rules=None, max_length=None): def custom_check_file(fn, identifier, rules, color, skip_rules=None, max_length=None):

View File

@ -1,7 +1,7 @@
from typing import Optional, Any, Dict, List, Tuple from typing import Optional, Any, Dict, List, Tuple
from collections import defaultdict from collections import defaultdict
SUBJECT_WITH_BRANCH_TEMPLATE = '{repo} / {branch}' TOPIC_WITH_BRANCH_TEMPLATE = '{repo} / {branch}'
SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE = '{repo} / {type} #{id} {title}' TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE = '{repo} / {type} #{id} {title}'
EMPTY_SHA = '0000000000000000000000000000000000000000' EMPTY_SHA = '0000000000000000000000000000000000000000'

View File

@ -7,7 +7,7 @@ from zerver.lib.request import REQ, has_request_variables
from zerver.lib.response import json_success from zerver.lib.response import json_success
from zerver.lib.validator import check_dict from zerver.lib.validator import check_dict
from zerver.lib.webhooks.common import check_send_webhook_message from zerver.lib.webhooks.common import check_send_webhook_message
from zerver.lib.webhooks.git import SUBJECT_WITH_BRANCH_TEMPLATE, \ from zerver.lib.webhooks.git import TOPIC_WITH_BRANCH_TEMPLATE, \
get_push_commits_event_message get_push_commits_event_message
from zerver.models import UserProfile, get_client from zerver.models import UserProfile, get_client
@ -43,7 +43,7 @@ def api_bitbucket_webhook(request: HttpRequest, user_profile: UserProfile,
if branches is not None and branches.find(branch) == -1: if branches is not None and branches.find(branch) == -1:
return json_success() return json_success()
content = get_push_commits_event_message(payload['user'], None, branch, commits) content = get_push_commits_event_message(payload['user'], None, branch, commits)
subject = SUBJECT_WITH_BRANCH_TEMPLATE.format(repo=repository['name'], branch=branch) subject = TOPIC_WITH_BRANCH_TEMPLATE.format(repo=repository['name'], branch=branch)
check_send_webhook_message(request, user_profile, subject, content) check_send_webhook_message(request, user_profile, subject, content)
return json_success() return json_success()

View File

@ -12,8 +12,8 @@ from zerver.lib.request import REQ, has_request_variables
from zerver.lib.response import json_error, json_success from zerver.lib.response import json_error, json_success
from zerver.lib.webhooks.common import check_send_webhook_message, \ from zerver.lib.webhooks.common import check_send_webhook_message, \
validate_extract_webhook_http_header, UnexpectedWebhookEventType validate_extract_webhook_http_header, UnexpectedWebhookEventType
from zerver.lib.webhooks.git import SUBJECT_WITH_BRANCH_TEMPLATE, \ from zerver.lib.webhooks.git import TOPIC_WITH_BRANCH_TEMPLATE, \
SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE, \ TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE, \
get_commits_comment_action_message, get_force_push_commits_event_message, \ get_commits_comment_action_message, get_force_push_commits_event_message, \
get_issue_event_message, get_pull_request_event_message, \ get_issue_event_message, get_pull_request_event_message, \
get_push_commits_event_message, get_push_tag_event_message, \ get_push_commits_event_message, get_push_tag_event_message, \
@ -78,7 +78,7 @@ def api_bitbucket2_webhook(request: HttpRequest, user_profile: UserProfile,
def get_subject_for_branch_specified_events(payload: Dict[str, Any], def get_subject_for_branch_specified_events(payload: Dict[str, Any],
branch_name: Optional[str]=None) -> str: branch_name: Optional[str]=None) -> str:
return SUBJECT_WITH_BRANCH_TEMPLATE.format( return TOPIC_WITH_BRANCH_TEMPLATE.format(
repo=get_repository_name(payload['repository']), repo=get_repository_name(payload['repository']),
branch=get_branch_name_for_push_event(payload) if branch_name is None else branch_name branch=get_branch_name_for_push_event(payload) if branch_name is None else branch_name
) )
@ -103,14 +103,14 @@ def get_subject(payload: Dict[str, Any]) -> str:
def get_subject_based_on_type(payload: Dict[str, Any], type: str) -> Any: def get_subject_based_on_type(payload: Dict[str, Any], type: str) -> Any:
if type.startswith('pull_request'): if type.startswith('pull_request'):
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repository_name(payload['repository']), repo=get_repository_name(payload['repository']),
type='PR', type='PR',
id=payload['pullrequest']['id'], id=payload['pullrequest']['id'],
title=payload['pullrequest']['title'] title=payload['pullrequest']['title']
) )
if type.startswith('issue'): if type.startswith('issue'):
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repository_name(payload['repository']), repo=get_repository_name(payload['repository']),
type='Issue', type='Issue',
id=payload['issue']['id'], id=payload['issue']['id'],

View File

@ -12,7 +12,7 @@ from zerver.lib.response import json_success
from zerver.lib.webhooks.common import check_send_webhook_message, \ from zerver.lib.webhooks.common import check_send_webhook_message, \
validate_extract_webhook_http_header, UnexpectedWebhookEventType validate_extract_webhook_http_header, UnexpectedWebhookEventType
from zerver.lib.webhooks.git import CONTENT_MESSAGE_TEMPLATE, \ from zerver.lib.webhooks.git import CONTENT_MESSAGE_TEMPLATE, \
SUBJECT_WITH_BRANCH_TEMPLATE, SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE, \ TOPIC_WITH_BRANCH_TEMPLATE, TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE, \
get_commits_comment_action_message, get_issue_event_message, \ get_commits_comment_action_message, get_issue_event_message, \
get_pull_request_event_message, get_push_commits_event_message, \ get_pull_request_event_message, get_push_commits_event_message, \
get_push_tag_event_message, get_setup_webhook_message get_push_tag_event_message, get_setup_webhook_message
@ -359,14 +359,14 @@ def is_commit_push_event(payload: Dict[str, Any]) -> bool:
def get_subject_based_on_type(payload: Dict[str, Any], event: str) -> str: def get_subject_based_on_type(payload: Dict[str, Any], event: str) -> str:
if 'pull_request' in event: if 'pull_request' in event:
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repository_name(payload), repo=get_repository_name(payload),
type='PR', type='PR',
id=payload['pull_request']['number'], id=payload['pull_request']['number'],
title=payload['pull_request']['title'] title=payload['pull_request']['title']
) )
elif event.startswith('issue'): elif event.startswith('issue'):
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repository_name(payload), repo=get_repository_name(payload),
type='Issue', type='Issue',
id=payload['issue']['number'], id=payload['issue']['number'],
@ -380,12 +380,12 @@ def get_subject_based_on_type(payload: Dict[str, Any], event: str) -> str:
elif event == 'membership': elif event == 'membership':
return u"{} organization".format(payload['organization']['login']) return u"{} organization".format(payload['organization']['login'])
elif event == 'push_commits': elif event == 'push_commits':
return SUBJECT_WITH_BRANCH_TEMPLATE.format( return TOPIC_WITH_BRANCH_TEMPLATE.format(
repo=get_repository_name(payload), repo=get_repository_name(payload),
branch=get_branch_name_from_ref(payload['ref']) branch=get_branch_name_from_ref(payload['ref'])
) )
elif event == 'gollum': elif event == 'gollum':
return SUBJECT_WITH_BRANCH_TEMPLATE.format( return TOPIC_WITH_BRANCH_TEMPLATE.format(
repo=get_repository_name(payload), repo=get_repository_name(payload),
branch='Wiki Pages' branch='Wiki Pages'
) )

View File

@ -11,8 +11,8 @@ from zerver.decorator import authenticated_api_view, \
from zerver.lib.request import REQ, has_request_variables, JsonableError from zerver.lib.request import REQ, has_request_variables, JsonableError
from zerver.lib.response import json_success from zerver.lib.response import json_success
from zerver.lib.validator import check_dict from zerver.lib.validator import check_dict
from zerver.lib.webhooks.git import SUBJECT_WITH_BRANCH_TEMPLATE, \ from zerver.lib.webhooks.git import TOPIC_WITH_BRANCH_TEMPLATE, \
SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE, \ TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE, \
get_commits_comment_action_message, get_force_push_commits_event_message, \ get_commits_comment_action_message, get_force_push_commits_event_message, \
get_issue_event_message, get_pull_request_event_message, \ get_issue_event_message, get_pull_request_event_message, \
get_push_commits_event_message, get_remove_branch_event_message get_push_commits_event_message, get_remove_branch_event_message
@ -103,7 +103,7 @@ def get_pull_request_or_issue_assignee(object_payload: Mapping[str, Any]) -> Opt
def get_pull_request_or_issue_subject(repository: Mapping[str, Any], def get_pull_request_or_issue_subject(repository: Mapping[str, Any],
payload_object: Mapping[str, Any], payload_object: Mapping[str, Any],
type: str) -> str: type: str) -> str:
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=repository['name'], repo=repository['name'],
type=type, type=type,
id=payload_object['number'], id=payload_object['number'],
@ -292,7 +292,7 @@ def build_message_from_gitlog(user_profile: UserProfile, name: str, ref: str,
created: Optional[str]=None, deleted: Optional[bool]=False created: Optional[str]=None, deleted: Optional[bool]=False
) -> Tuple[str, str]: ) -> Tuple[str, str]:
short_ref = re.sub(r'^refs/heads/', '', ref) short_ref = re.sub(r'^refs/heads/', '', ref)
subject = SUBJECT_WITH_BRANCH_TEMPLATE.format(repo=name, branch=short_ref) subject = TOPIC_WITH_BRANCH_TEMPLATE.format(repo=name, branch=short_ref)
if re.match(r'^0+$', after): if re.match(r'^0+$', after):
content = get_remove_branch_event_message(pusher, short_ref) content = get_remove_branch_event_message(pusher, short_ref)

View File

@ -11,7 +11,7 @@ from zerver.lib.response import json_success
from zerver.lib.webhooks.common import check_send_webhook_message, \ from zerver.lib.webhooks.common import check_send_webhook_message, \
validate_extract_webhook_http_header, UnexpectedWebhookEventType validate_extract_webhook_http_header, UnexpectedWebhookEventType
from zerver.lib.webhooks.git import EMPTY_SHA, \ from zerver.lib.webhooks.git import EMPTY_SHA, \
SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE, \ TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE, \
get_commits_comment_action_message, get_issue_event_message, \ get_commits_comment_action_message, get_issue_event_message, \
get_pull_request_event_message, get_push_commits_event_message, \ get_pull_request_event_message, get_push_commits_event_message, \
get_push_tag_event_message, get_remove_branch_event_message get_push_tag_event_message, get_remove_branch_event_message
@ -323,28 +323,28 @@ def get_subject_based_on_event(event: str, payload: Dict[str, Any]) -> str:
get_repo_name(payload), get_repo_name(payload),
payload['object_attributes'].get('ref').replace('refs/heads/', '')) payload['object_attributes'].get('ref').replace('refs/heads/', ''))
elif event.startswith('Merge Request Hook'): elif event.startswith('Merge Request Hook'):
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repo_name(payload), repo=get_repo_name(payload),
type='MR', type='MR',
id=payload['object_attributes'].get('iid'), id=payload['object_attributes'].get('iid'),
title=payload['object_attributes'].get('title') title=payload['object_attributes'].get('title')
) )
elif event.startswith('Issue Hook'): elif event.startswith('Issue Hook'):
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repo_name(payload), repo=get_repo_name(payload),
type='Issue', type='Issue',
id=payload['object_attributes'].get('iid'), id=payload['object_attributes'].get('iid'),
title=payload['object_attributes'].get('title') title=payload['object_attributes'].get('title')
) )
elif event == 'Note Hook Issue': elif event == 'Note Hook Issue':
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repo_name(payload), repo=get_repo_name(payload),
type='Issue', type='Issue',
id=payload['issue'].get('iid'), id=payload['issue'].get('iid'),
title=payload['issue'].get('title') title=payload['issue'].get('title')
) )
elif event == 'Note Hook MergeRequest': elif event == 'Note Hook MergeRequest':
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repo_name(payload), repo=get_repo_name(payload),
type='MR', type='MR',
id=payload['merge_request'].get('iid'), id=payload['merge_request'].get('iid'),
@ -352,7 +352,7 @@ def get_subject_based_on_event(event: str, payload: Dict[str, Any]) -> str:
) )
elif event == 'Note Hook Snippet': elif event == 'Note Hook Snippet':
return SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repo_name(payload), repo=get_repo_name(payload),
type='Snippet', type='Snippet',
id=payload['snippet'].get('id'), id=payload['snippet'].get('id'),

View File

@ -10,8 +10,8 @@ from zerver.lib.request import REQ, has_request_variables
from zerver.lib.response import json_error, json_success from zerver.lib.response import json_error, json_success
from zerver.lib.webhooks.common import check_send_webhook_message, \ from zerver.lib.webhooks.common import check_send_webhook_message, \
validate_extract_webhook_http_header, UnexpectedWebhookEventType validate_extract_webhook_http_header, UnexpectedWebhookEventType
from zerver.lib.webhooks.git import SUBJECT_WITH_BRANCH_TEMPLATE, \ from zerver.lib.webhooks.git import TOPIC_WITH_BRANCH_TEMPLATE, \
SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE, get_create_branch_event_message, \ TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE, get_create_branch_event_message, \
get_pull_request_event_message, get_push_commits_event_message get_pull_request_event_message, get_push_commits_event_message
from zerver.models import UserProfile from zerver.models import UserProfile
@ -76,13 +76,13 @@ def api_gogs_webhook(request: HttpRequest, user_profile: UserProfile,
if branches is not None and branches.find(branch) == -1: if branches is not None and branches.find(branch) == -1:
return json_success() return json_success()
body = format_push_event(payload) body = format_push_event(payload)
topic = SUBJECT_WITH_BRANCH_TEMPLATE.format( topic = TOPIC_WITH_BRANCH_TEMPLATE.format(
repo=repo, repo=repo,
branch=branch branch=branch
) )
elif event == 'create': elif event == 'create':
body = format_new_branch_event(payload) body = format_new_branch_event(payload)
topic = SUBJECT_WITH_BRANCH_TEMPLATE.format( topic = TOPIC_WITH_BRANCH_TEMPLATE.format(
repo=repo, repo=repo,
branch=payload['ref'] branch=payload['ref']
) )
@ -91,7 +91,7 @@ def api_gogs_webhook(request: HttpRequest, user_profile: UserProfile,
payload, payload,
include_title=user_specified_topic is not None include_title=user_specified_topic is not None
) )
topic = SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format( topic = TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=repo, repo=repo,
type='PR', type='PR',
id=payload['pull_request']['id'], id=payload['pull_request']['id'],