mirror of https://github.com/zulip/zulip.git
webhooks/gogs: Include title in message body if not in topic.
This is a follow-up in response to Tim's comments on #9951. In instances where all messages from a Gogs integration are grouped under one user specified topic (specified in the URL), we should include the title of the PR in the message body, since the availability of a user-specified topic precludes us from including it in the topic itself (which was the default behaviour).
This commit is contained in:
parent
e1df70f61f
commit
85b555b1a8
|
@ -69,6 +69,13 @@ class GogsHookTests(WebhookTestCase):
|
||||||
from `feature` to `master`"""
|
from `feature` to `master`"""
|
||||||
self.send_and_test_stream_message('pull_request_opened', expected_subject, expected_message, HTTP_X_GOGS_EVENT='pull_request')
|
self.send_and_test_stream_message('pull_request_opened', expected_subject, expected_message, HTTP_X_GOGS_EVENT='pull_request')
|
||||||
|
|
||||||
|
def test_pull_request_opened_with_custom_topic_in_url(self) -> None:
|
||||||
|
self.url = self.build_webhook_url(topic='notifications')
|
||||||
|
expected_subject = u"notifications"
|
||||||
|
expected_message = u"""john opened [PR #1 Title Text for Pull Request](http://localhost:3000/john/try-git/pulls/1)
|
||||||
|
from `feature` to `master`"""
|
||||||
|
self.send_and_test_stream_message('pull_request_opened', expected_subject, expected_message, HTTP_X_GOGS_EVENT='pull_request')
|
||||||
|
|
||||||
def test_pull_request_closed(self) -> None:
|
def test_pull_request_closed(self) -> None:
|
||||||
expected_subject = u"try-git / PR #1 Title Text for Pull Request"
|
expected_subject = u"try-git / PR #1 Title Text for Pull Request"
|
||||||
expected_message = u"""john closed [PR #1](http://localhost:3000/john/try-git/pulls/1)
|
expected_message = u"""john closed [PR #1](http://localhost:3000/john/try-git/pulls/1)
|
||||||
|
|
|
@ -43,7 +43,8 @@ def format_new_branch_event(payload: Dict[str, Any]) -> str:
|
||||||
}
|
}
|
||||||
return get_create_branch_event_message(**data)
|
return get_create_branch_event_message(**data)
|
||||||
|
|
||||||
def format_pull_request_event(payload: Dict[str, Any]) -> str:
|
def format_pull_request_event(payload: Dict[str, Any],
|
||||||
|
include_title: Optional[bool]=False) -> str:
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'user_name': payload['pull_request']['user']['username'],
|
'user_name': payload['pull_request']['user']['username'],
|
||||||
|
@ -52,6 +53,7 @@ def format_pull_request_event(payload: Dict[str, Any]) -> str:
|
||||||
'number': payload['pull_request']['number'],
|
'number': payload['pull_request']['number'],
|
||||||
'target_branch': payload['pull_request']['head_branch'],
|
'target_branch': payload['pull_request']['head_branch'],
|
||||||
'base_branch': payload['pull_request']['base_branch'],
|
'base_branch': payload['pull_request']['base_branch'],
|
||||||
|
'title': payload['pull_request']['title'] if include_title else None
|
||||||
}
|
}
|
||||||
|
|
||||||
if payload['pull_request']['merged']:
|
if payload['pull_request']['merged']:
|
||||||
|
@ -64,7 +66,8 @@ def format_pull_request_event(payload: Dict[str, Any]) -> str:
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def api_gogs_webhook(request: HttpRequest, user_profile: UserProfile,
|
def api_gogs_webhook(request: HttpRequest, user_profile: UserProfile,
|
||||||
payload: Dict[str, Any]=REQ(argument_type='body'),
|
payload: Dict[str, Any]=REQ(argument_type='body'),
|
||||||
branches: Optional[str]=REQ(default=None)) -> HttpResponse:
|
branches: Optional[str]=REQ(default=None),
|
||||||
|
user_specified_topic: Optional[str]=REQ("topic", default=None)) -> HttpResponse:
|
||||||
|
|
||||||
repo = payload['repository']['name']
|
repo = payload['repository']['name']
|
||||||
event = validate_extract_webhook_http_header(request, 'X_GOGS_EVENT', 'Gogs')
|
event = validate_extract_webhook_http_header(request, 'X_GOGS_EVENT', 'Gogs')
|
||||||
|
@ -84,7 +87,10 @@ def api_gogs_webhook(request: HttpRequest, user_profile: UserProfile,
|
||||||
branch=payload['ref']
|
branch=payload['ref']
|
||||||
)
|
)
|
||||||
elif event == 'pull_request':
|
elif event == 'pull_request':
|
||||||
body = format_pull_request_event(payload)
|
body = format_pull_request_event(
|
||||||
|
payload,
|
||||||
|
include_title=user_specified_topic is not None
|
||||||
|
)
|
||||||
topic = SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
|
topic = SUBJECT_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
|
||||||
repo=repo,
|
repo=repo,
|
||||||
type='PR',
|
type='PR',
|
||||||
|
|
Loading…
Reference in New Issue