mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
Add get_remove_branch_event_message method to zerver/lib/webhooks/git.py for normalizing remove branch message in all git integrations.
64 lines
2.4 KiB
Python
64 lines
2.4 KiB
Python
from six import text_type
|
|
from typing import Optional, Any
|
|
|
|
SUBJECT_WITH_BRANCH_TEMPLATE = u'{repo} / {branch}'
|
|
|
|
PUSH_COMMITS_LIMIT = 10
|
|
PUSH_PUSHED_TEXT_WITH_URL = u"[pushed]({compare_url})"
|
|
PUSH_PUSHED_TEXT_WITHOUT_URL = u"pushed"
|
|
PUSH_COMMIT_ROW_TEMPLATE = u'* [{commit_short_sha}]({commit_url}): {commit_msg}\n'
|
|
PUSH_COMMITS_MORE_THAN_LIMIT_TEMPLATE = u"[and {commits_number} more commit(s)]"
|
|
PUSH_COMMITS_MESSAGE_TEMPLATE = u"""{user_name} {pushed_text} to branch {branch_name}
|
|
|
|
{commits_list}
|
|
{commits_more_than_limit}
|
|
"""
|
|
|
|
FORCE_PUSH_COMMITS_MESSAGE_TEMPLATE = u"{user_name} [force pushed]({url}) to branch {branch_name}. Head is now {head}"
|
|
REMOVE_BRANCH_MESSAGE_TEMPLATE = u"{user_name} deleted branch {branch_name}"
|
|
|
|
def get_push_commits_event_message(user_name, compare_url, branch_name, commits_data):
|
|
# type: (text_type, Optional[text_type], text_type, List[Dict[str, Any]]) -> text_type
|
|
commits_list_message = u''
|
|
for commit in commits_data[:PUSH_COMMITS_LIMIT]:
|
|
commits_list_message += PUSH_COMMIT_ROW_TEMPLATE.format(
|
|
commit_short_sha=commit.get('sha')[:7],
|
|
commit_url=commit.get('url'),
|
|
commit_msg=commit.get('message').partition('\n')[0]
|
|
)
|
|
|
|
if len(commits_data) > PUSH_COMMITS_LIMIT:
|
|
commits_more_than_limit_message = PUSH_COMMITS_MORE_THAN_LIMIT_TEMPLATE.format(
|
|
commits_number=len(commits_data) - PUSH_COMMITS_LIMIT)
|
|
else:
|
|
commits_more_than_limit_message = ''
|
|
|
|
if compare_url:
|
|
pushed_text_message = PUSH_PUSHED_TEXT_WITH_URL.format(compare_url=compare_url)
|
|
else:
|
|
pushed_text_message = PUSH_PUSHED_TEXT_WITHOUT_URL
|
|
|
|
return PUSH_COMMITS_MESSAGE_TEMPLATE.format(
|
|
user_name=user_name,
|
|
pushed_text=pushed_text_message,
|
|
branch_name=branch_name,
|
|
commits_list=commits_list_message.rstrip(),
|
|
commits_more_than_limit=commits_more_than_limit_message
|
|
).rstrip()
|
|
|
|
def get_force_push_commits_event_message(user_name, url, branch_name, head):
|
|
# type: (text_type, text_type, text_type, text_type) -> text_type
|
|
return FORCE_PUSH_COMMITS_MESSAGE_TEMPLATE.format(
|
|
user_name=user_name,
|
|
url=url,
|
|
branch_name=branch_name,
|
|
head=head
|
|
)
|
|
|
|
def get_remove_branch_event_message(user_name, branch_name):
|
|
# type: (text_type, text_type) -> text_type
|
|
return REMOVE_BRANCH_MESSAGE_TEMPLATE.format(
|
|
user_name=user_name,
|
|
branch_name=branch_name,
|
|
)
|