Fix missing six.text_type() call on APIException.__str__

The call was added in 426547c61c
to allow for dict-style arguments to ValidationError but does not
apply to other APIException descendants.

It is possible to hit edge cases when printing an APIException in a
custom exception handler, that was passed a non-string as its first
argument (eg. AuthenticationError({"code": "foo", "detail": "bar"}))
This commit is contained in:
Jerome Leclanche 2017-10-04 08:03:52 +03:00
parent 5dcb460793
commit 5c9d78e537

View File

@ -92,7 +92,7 @@ class APIException(Exception):
self.detail = _get_error_details(detail, code)
def __str__(self):
return self.detail
return six.text_type(self.detail)
def get_codes(self):
"""
@ -136,9 +136,6 @@ class ValidationError(APIException):
self.detail = _get_error_details(detail, code)
def __str__(self):
return six.text_type(self.detail)
class ParseError(APIException):
status_code = status.HTTP_400_BAD_REQUEST