JsonableError: Rename status_code and rely more on its default.

With #5598 there will soon be an application-level error code
optionally associated with a `JsonableError`, so rename this
field to make clear that it specifically refers to an
HTTP status code.

Also take this opportunity to eliminate most of the places
that refer to it, which only do so to repeat the default value.
This commit is contained in:
Greg Price
2017-07-19 16:23:12 -07:00
committed by Tim Abbott
parent 098b6fc53b
commit 6dfb46dc08
5 changed files with 12 additions and 15 deletions

View File

@@ -5,12 +5,12 @@ from django.core.exceptions import PermissionDenied
class JsonableError(Exception): class JsonableError(Exception):
msg = None # type: Text msg = None # type: Text
status_code = None # type: int http_status_code = 400 # type: int
def __init__(self, msg, status_code=400): def __init__(self, msg, http_status_code=400):
# type: (Text) -> None # type: (Text, int) -> None
self.msg = msg self.msg = msg
self.status_code = status_code self.http_status_code = http_status_code
def __str__(self): def __str__(self):
# type: () -> str # type: () -> str

View File

@@ -11,18 +11,16 @@ from django.utils.translation import ugettext as _
from zerver.lib.exceptions import JsonableError from zerver.lib.exceptions import JsonableError
class RequestVariableMissingError(JsonableError): class RequestVariableMissingError(JsonableError):
def __init__(self, var_name, status_code=400): def __init__(self, var_name):
self.var_name = var_name self.var_name = var_name
self.status_code = status_code
def to_json_error_msg(self): def to_json_error_msg(self):
return _("Missing '%s' argument") % (self.var_name,) return _("Missing '%s' argument") % (self.var_name,)
class RequestVariableConversionError(JsonableError): class RequestVariableConversionError(JsonableError):
def __init__(self, var_name, bad_value, status_code=400): def __init__(self, var_name, bad_value):
self.var_name = var_name self.var_name = var_name
self.bad_value = bad_value self.bad_value = bad_value
self.status_code = status_code
def to_json_error_msg(self): def to_json_error_msg(self):
return (_("Bad value for '%(var_name)s': %(value)s") % return (_("Bad value for '%(var_name)s': %(value)s") %

View File

@@ -286,7 +286,7 @@ class JsonErrorHandler(MiddlewareMixin):
def process_exception(self, request, exception): def process_exception(self, request, exception):
# type: (HttpRequest, Exception) -> Optional[HttpResponse] # type: (HttpRequest, Exception) -> Optional[HttpResponse]
if isinstance(exception, JsonableError): if isinstance(exception, JsonableError):
return json_error(exception.to_json_error_msg(), status=exception.status_code) return json_error(exception.to_json_error_msg(), status=exception.http_status_code)
if request.error_format == "JSON": if request.error_format == "JSON":
logging.error(traceback.format_exc()) logging.error(traceback.format_exc())
return json_error(_("Internal server error"), status=500) return json_error(_("Internal server error"), status=500)

View File

@@ -56,10 +56,9 @@ import six
LARGER_THAN_MAX_MESSAGE_ID = 10000000000000000 LARGER_THAN_MAX_MESSAGE_ID = 10000000000000000
class BadNarrowOperator(JsonableError): class BadNarrowOperator(JsonableError):
def __init__(self, desc, status_code=400): def __init__(self, desc):
# type: (str, int) -> None # type: (str) -> None
self.desc = desc self.desc = desc
self.status_code = status_code
def to_json_error_msg(self): def to_json_error_msg(self):
# type: () -> str # type: () -> str

View File

@@ -35,10 +35,10 @@ from six.moves import urllib
import six import six
class PrincipalError(JsonableError): class PrincipalError(JsonableError):
def __init__(self, principal, status_code=403): def __init__(self, principal):
# type: (Text, int) -> None # type: (Text) -> None
self.principal = principal # type: Text self.principal = principal # type: Text
self.status_code = status_code # type: int self.http_status_code = 403 # type: int
def to_json_error_msg(self): def to_json_error_msg(self):
# type: () -> Text # type: () -> Text