mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 05:53:43 +00:00
integrations: Improve GitHub issue milestoned notifications.
Earlier, the notifications had no information about the milestone that was added or removed.
This commit is contained in:
committed by
Tim Abbott
parent
1c567ae616
commit
34f31ab9d2
@@ -55,6 +55,9 @@ ISSUE_LABELED_OR_UNLABELED_MESSAGE_TEMPLATE = (
|
|||||||
)
|
)
|
||||||
ISSUE_LABELED_OR_UNLABELED_MESSAGE_TEMPLATE_WITH_TITLE = "[{user_name}]({user_url}) {action} the {label_name} label {preposition} [Issue #{id} {title}]({url})."
|
ISSUE_LABELED_OR_UNLABELED_MESSAGE_TEMPLATE_WITH_TITLE = "[{user_name}]({user_url}) {action} the {label_name} label {preposition} [Issue #{id} {title}]({url})."
|
||||||
|
|
||||||
|
ISSUE_MILESTONED_OR_DEMILESTONED_MESSAGE_TEMPLATE = "[{user_name}]({user_url}) {action} milestone [{milestone_name}]({milestone_url}) {preposition} [issue #{id}]({url})."
|
||||||
|
ISSUE_MILESTONED_OR_DEMILESTONED_MESSAGE_TEMPLATE_WITH_TITLE = "[{user_name}]({user_url}) {action} milestone [{milestone_name}]({milestone_url}) {preposition} [issue #{id} {title}]({url})."
|
||||||
|
|
||||||
PULL_REQUEST_OR_ISSUE_MESSAGE_TEMPLATE = "{user_name} {action} [{type}{id}]({url})"
|
PULL_REQUEST_OR_ISSUE_MESSAGE_TEMPLATE = "{user_name} {action} [{type}{id}]({url})"
|
||||||
PULL_REQUEST_OR_ISSUE_MESSAGE_TEMPLATE_WITH_TITLE = (
|
PULL_REQUEST_OR_ISSUE_MESSAGE_TEMPLATE_WITH_TITLE = (
|
||||||
"{user_name} {action} [{type}{id} {title}]({url})"
|
"{user_name} {action} [{type}{id} {title}]({url})"
|
||||||
@@ -302,6 +305,32 @@ def get_issue_labeled_or_unlabeled_event_message(
|
|||||||
return ISSUE_LABELED_OR_UNLABELED_MESSAGE_TEMPLATE.format(**args)
|
return ISSUE_LABELED_OR_UNLABELED_MESSAGE_TEMPLATE.format(**args)
|
||||||
|
|
||||||
|
|
||||||
|
def get_issue_milestoned_or_demilestoned_event_message(
|
||||||
|
user_name: str,
|
||||||
|
action: str,
|
||||||
|
url: str,
|
||||||
|
number: int,
|
||||||
|
milestone_name: str,
|
||||||
|
milestone_url: str,
|
||||||
|
user_url: str,
|
||||||
|
title: Optional[str] = None,
|
||||||
|
) -> str:
|
||||||
|
args = {
|
||||||
|
"user_name": user_name,
|
||||||
|
"action": action,
|
||||||
|
"url": url,
|
||||||
|
"id": number,
|
||||||
|
"milestone_name": milestone_name,
|
||||||
|
"milestone_url": milestone_url,
|
||||||
|
"user_url": user_url,
|
||||||
|
"title": title,
|
||||||
|
"preposition": "to" if action == "added" else "from",
|
||||||
|
}
|
||||||
|
if title is not None:
|
||||||
|
return ISSUE_MILESTONED_OR_DEMILESTONED_MESSAGE_TEMPLATE_WITH_TITLE.format(**args)
|
||||||
|
return ISSUE_MILESTONED_OR_DEMILESTONED_MESSAGE_TEMPLATE.format(**args)
|
||||||
|
|
||||||
|
|
||||||
def get_push_tag_event_message(
|
def get_push_tag_event_message(
|
||||||
user_name: str, tag_name: str, tag_url: Optional[str] = None, action: str = "pushed"
|
user_name: str, tag_name: str, tag_url: Optional[str] = None, action: str = "pushed"
|
||||||
) -> str:
|
) -> str:
|
||||||
|
|||||||
@@ -195,20 +195,20 @@ class GitHubWebhookTest(WebhookTestCase):
|
|||||||
|
|
||||||
def test_issue_milestoned(self) -> None:
|
def test_issue_milestoned(self) -> None:
|
||||||
expected_topic = "testing-gh / issue #6 This is a sample issue to test GH I..."
|
expected_topic = "testing-gh / issue #6 This is a sample issue to test GH I..."
|
||||||
expected_message = "sbansal1999 milestoned [issue #6](https://github.com/sbansal1999/testing-gh/issues/6):\n\n~~~ quote\nThis tests the functionality of the GH Integration. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id sagittis ex. In at malesuada velit. Nulla convallis sem ultrices sapien finibus, a auctor nibh egestas. Cras mattis tristique ex, vitae pretium ante tempor vel. Vestibulum lacus tellus, rutrum ut neque eu, ornare facilisis diam. Curabitur ultrices mauris dolor, at lacinia felis mollis in. Fusce tincidunt magna a erat mollis volutpat. Etiam fringilla, ipsum ac vehicula pellentesque, purus augue viverra nunc, vel lacinia felis lectus ac risus. Morbi magna elit, tempus quis euismod quis, auctor ac diam. Nam quis tristique ligula. Proin ut est accumsan, ornare risus vel, fringilla ipsum.\n~~~"
|
expected_message = "[sbansal1999](https://github.com/sbansal1999) added milestone [some_random_milestone](https://github.com/sbansal1999/testing-gh/milestone/1) to [issue #6](https://github.com/sbansal1999/testing-gh/issues/6)."
|
||||||
|
|
||||||
self.check_webhook("issues__milestoned", expected_topic, expected_message)
|
self.check_webhook("issues__milestoned", expected_topic, expected_message)
|
||||||
|
|
||||||
def test_issue_milestoned_with_custom_topic_in_url(self) -> None:
|
def test_issue_milestoned_with_custom_topic_in_url(self) -> None:
|
||||||
self.url = self.build_webhook_url(topic="notifications")
|
self.url = self.build_webhook_url(topic="notifications")
|
||||||
expected_topic = "notifications"
|
expected_topic = "notifications"
|
||||||
expected_message = "sbansal1999 milestoned [issue #6 This is a sample issue to test GH Integration Func](https://github.com/sbansal1999/testing-gh/issues/6):\n\n~~~ quote\nThis tests the functionality of the GH Integration. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id sagittis ex. In at malesuada velit. Nulla convallis sem ultrices sapien finibus, a auctor nibh egestas. Cras mattis tristique ex, vitae pretium ante tempor vel. Vestibulum lacus tellus, rutrum ut neque eu, ornare facilisis diam. Curabitur ultrices mauris dolor, at lacinia felis mollis in. Fusce tincidunt magna a erat mollis volutpat. Etiam fringilla, ipsum ac vehicula pellentesque, purus augue viverra nunc, vel lacinia felis lectus ac risus. Morbi magna elit, tempus quis euismod quis, auctor ac diam. Nam quis tristique ligula. Proin ut est accumsan, ornare risus vel, fringilla ipsum.\n~~~"
|
expected_message = "[sbansal1999](https://github.com/sbansal1999) added milestone [some_random_milestone](https://github.com/sbansal1999/testing-gh/milestone/1) to [issue #6 This is a sample issue to test GH Integration Func](https://github.com/sbansal1999/testing-gh/issues/6)."
|
||||||
|
|
||||||
self.check_webhook("issues__milestoned", expected_topic, expected_message)
|
self.check_webhook("issues__milestoned", expected_topic, expected_message)
|
||||||
|
|
||||||
def test_issue_demilestoned(self) -> None:
|
def test_issue_demilestoned(self) -> None:
|
||||||
expected_topic = "testing-gh / issue #6 This is a sample issue to test GH I..."
|
expected_topic = "testing-gh / issue #6 This is a sample issue to test GH I..."
|
||||||
expected_message = "sbansal1999 demilestoned [issue #6](https://github.com/sbansal1999/testing-gh/issues/6):\n\n~~~ quote\nThis tests the functionality of the GH Integration. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id sagittis ex. In at malesuada velit. Nulla convallis sem ultrices sapien finibus, a auctor nibh egestas. Cras mattis tristique ex, vitae pretium ante tempor vel. Vestibulum lacus tellus, rutrum ut neque eu, ornare facilisis diam. Curabitur ultrices mauris dolor, at lacinia felis mollis in. Fusce tincidunt magna a erat mollis volutpat. Etiam fringilla, ipsum ac vehicula pellentesque, purus augue viverra nunc, vel lacinia felis lectus ac risus. Morbi magna elit, tempus quis euismod quis, auctor ac diam. Nam quis tristique ligula. Proin ut est accumsan, ornare risus vel, fringilla ipsum.\n~~~"
|
expected_message = "[sbansal1999](https://github.com/sbansal1999) removed milestone [some_random_milestone](https://github.com/sbansal1999/testing-gh/milestone/1) from [issue #6](https://github.com/sbansal1999/testing-gh/issues/6)."
|
||||||
|
|
||||||
self.check_webhook("issues__demilestoned", expected_topic, expected_message)
|
self.check_webhook("issues__demilestoned", expected_topic, expected_message)
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ from zerver.lib.webhooks.git import (
|
|||||||
get_commits_comment_action_message,
|
get_commits_comment_action_message,
|
||||||
get_issue_event_message,
|
get_issue_event_message,
|
||||||
get_issue_labeled_or_unlabeled_event_message,
|
get_issue_labeled_or_unlabeled_event_message,
|
||||||
|
get_issue_milestoned_or_demilestoned_event_message,
|
||||||
get_pull_request_event_message,
|
get_pull_request_event_message,
|
||||||
get_push_commits_event_message,
|
get_push_commits_event_message,
|
||||||
get_push_tag_event_message,
|
get_push_tag_event_message,
|
||||||
@@ -161,6 +162,10 @@ def get_issue_body(helper: Helper) -> str:
|
|||||||
action = payload["action"].tame(check_string)
|
action = payload["action"].tame(check_string)
|
||||||
issue = payload["issue"]
|
issue = payload["issue"]
|
||||||
has_assignee = "assignee" in payload
|
has_assignee = "assignee" in payload
|
||||||
|
|
||||||
|
if action in ("milestoned", "demilestoned"):
|
||||||
|
return get_issue_milestoned_or_demilestoned_body(helper)
|
||||||
|
|
||||||
base_message = get_issue_event_message(
|
base_message = get_issue_event_message(
|
||||||
user_name=get_sender_name(payload),
|
user_name=get_sender_name(payload),
|
||||||
action=action,
|
action=action,
|
||||||
@@ -221,6 +226,23 @@ def get_issue_labeled_or_unlabeled_body(helper: Helper) -> str:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_issue_milestoned_or_demilestoned_body(helper: Helper) -> str:
|
||||||
|
payload = helper.payload
|
||||||
|
include_title = helper.include_title
|
||||||
|
issue = payload["issue"]
|
||||||
|
|
||||||
|
return get_issue_milestoned_or_demilestoned_event_message(
|
||||||
|
user_name=get_sender_name(payload),
|
||||||
|
action="added" if payload["action"].tame(check_string) == "milestoned" else "removed",
|
||||||
|
url=issue["html_url"].tame(check_string),
|
||||||
|
number=issue["number"].tame(check_int),
|
||||||
|
milestone_name=payload["milestone"]["title"].tame(check_string),
|
||||||
|
milestone_url=payload["milestone"]["html_url"].tame(check_string),
|
||||||
|
user_url=get_sender_url(payload),
|
||||||
|
title=issue["title"].tame(check_string) if include_title else None,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_fork_body(helper: Helper) -> str:
|
def get_fork_body(helper: Helper) -> str:
|
||||||
payload = helper.payload
|
payload = helper.payload
|
||||||
forkee = payload["forkee"]
|
forkee = payload["forkee"]
|
||||||
|
|||||||
Reference in New Issue
Block a user