mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
There seems to have been a confusion between two different uses of the word “optional”: • An optional parameter may be omitted and replaced with a default value. • An Optional type has None as a possible value. Sometimes an optional parameter has a default value of None, or None is otherwise a meaningful value to provide, in which case it makes sense for the optional parameter to have an Optional type. But in other cases, optional parameters should not have Optional type. Fix them. Signed-off-by: Anders Kaseorg <anders@zulip.com>
44 lines
2.0 KiB
Python
44 lines
2.0 KiB
Python
# vim:fenc=utf-8
|
|
from typing import Any, Dict, Optional
|
|
|
|
from django.http import HttpRequest, HttpResponse
|
|
|
|
from zerver.decorator import api_key_only_webhook_view
|
|
from zerver.lib.request import REQ, has_request_variables
|
|
from zerver.lib.webhooks.common import get_http_headers_from_filename
|
|
from zerver.lib.webhooks.git import get_pull_request_event_message
|
|
from zerver.models import UserProfile
|
|
# Gitea is a fork of Gogs, and so the webhook implementation is nearly the same.
|
|
from zerver.webhooks.gogs.view import gogs_webhook_main
|
|
|
|
fixture_to_headers = get_http_headers_from_filename("HTTP_X_GITEA_EVENT")
|
|
|
|
def format_pull_request_event(payload: Dict[str, Any],
|
|
include_title: bool=False) -> str:
|
|
assignee = payload['pull_request']['assignee']
|
|
data = {
|
|
'user_name': payload['pull_request']['user']['username'],
|
|
'action': payload['action'],
|
|
'url': payload['pull_request']['html_url'],
|
|
'number': payload['pull_request']['number'],
|
|
'target_branch': payload['pull_request']['head']['ref'],
|
|
'base_branch': payload['pull_request']['base']['ref'],
|
|
'title': payload['pull_request']['title'] if include_title else None,
|
|
'assignee': assignee['login'] if assignee else None,
|
|
}
|
|
|
|
if payload['pull_request']['merged']:
|
|
data['user_name'] = payload['pull_request']['merged_by']['username']
|
|
data['action'] = 'merged'
|
|
|
|
return get_pull_request_event_message(**data)
|
|
|
|
@api_key_only_webhook_view('Gitea')
|
|
@has_request_variables
|
|
def api_gitea_webhook(request: HttpRequest, user_profile: UserProfile,
|
|
payload: Dict[str, Any]=REQ(argument_type='body'),
|
|
branches: Optional[str]=REQ(default=None),
|
|
user_specified_topic: Optional[str]=REQ("topic", default=None)) -> HttpResponse:
|
|
return gogs_webhook_main('Gitea', 'X_GITEA_EVENT', format_pull_request_event,
|
|
request, user_profile, payload, branches, user_specified_topic)
|