python: Migrate most json_error => JsonableError.

JsonableError has two major benefits over json_error:
* It can be raised from anywhere in the codebase, rather than
  being a return value, which is much more convenient for refactoring,
  as one doesn't potentially need to change error handling style when
  extracting a bit of view code to a function.
* It is guaranteed to contain the `code` property, which is helpful
  for API consistency.

Various stragglers are not updated because JsonableError requires
subclassing in order to specify custom data or HTTP status codes.
This commit is contained in:
PIG208
2021-07-01 00:35:50 +08:00
committed by Tim Abbott
parent 322a9b0346
commit dcbb2a78ca
50 changed files with 242 additions and 204 deletions

View File

@@ -4,8 +4,9 @@ from django.http import HttpRequest, HttpResponse
from django.utils.translation import gettext as _
from zerver.decorator import webhook_view
from zerver.lib.exceptions import JsonableError
from zerver.lib.request import REQ, has_request_variables
from zerver.lib.response import json_error, json_success
from zerver.lib.response import json_success
from zerver.lib.webhooks.common import check_send_webhook_message
from zerver.models import UserProfile
@@ -143,7 +144,7 @@ def api_front_webhook(
event = payload["type"]
if event not in EVENT_FUNCTION_MAPPER:
return json_error(_("Unknown webhook request"))
raise JsonableError(_("Unknown webhook request"))
topic = payload["conversation"]["id"]
body = get_body_based_on_event(event)(payload)