Revert Change excpetion_handler

This reverts commit 13c379c189.
This commit is contained in:
jun0jang 2019-11-28 12:56:05 +09:00
parent d1ebf825c6
commit e77c71ede3
3 changed files with 10 additions and 14 deletions

View File

@ -101,8 +101,10 @@ class APIException(Exception):
default_code = 'error' default_code = 'error'
def __init__(self, detail=None, code=None): def __init__(self, detail=None, code=None):
detail = detail or self.default_detail if detail is None:
code = code or self.default_code detail = self.default_detail
if code is None:
code = self.default_code
self.detail = _get_error_details(detail, code) self.detail = _get_error_details(detail, code)
@ -139,8 +141,10 @@ class ValidationError(APIException):
default_code = 'invalid' default_code = 'invalid'
def __init__(self, detail=None, code=None): def __init__(self, detail=None, code=None):
detail = detail or self.default_detail if detail is None:
code = code or self.default_code detail = self.default_detail
if code is None:
code = self.default_code
# For validation failures, we may collect many errors together, # For validation failures, we may collect many errors together,
# so the details should always be coerced to a list if not already. # so the details should always be coerced to a list if not already.

View File

@ -90,10 +90,10 @@ def exception_handler(exc, context):
if getattr(exc, 'wait', None): if getattr(exc, 'wait', None):
headers['Retry-After'] = '%d' % exc.wait headers['Retry-After'] = '%d' % exc.wait
if isinstance(exc.detail, (list, tuple, dict)): if isinstance(exc.detail, (list, dict)):
data = exc.detail data = exc.detail
else: else:
data = {'detail': exc.detail, 'code': exc.detail.code} data = {'detail': exc.detail}
set_rollback() set_rollback()
return Response(data, status=exc.status_code, headers=headers) return Response(data, status=exc.status_code, headers=headers)

View File

@ -499,34 +499,26 @@ class CustomPermissionsTests(TestCase):
def test_permission_denied(self): def test_permission_denied(self):
response = denied_view(self.request, pk=1) response = denied_view(self.request, pk=1)
detail = response.data.get('detail') detail = response.data.get('detail')
code = response.data.get('code')
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertNotEqual(detail, self.custom_message) self.assertNotEqual(detail, self.custom_message)
self.assertNotEqual(code, self.custom_code)
def test_permission_denied_with_custom_detail(self): def test_permission_denied_with_custom_detail(self):
response = denied_view_with_detail(self.request, pk=1) response = denied_view_with_detail(self.request, pk=1)
detail = response.data.get('detail') detail = response.data.get('detail')
code = response.data.get('code')
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertEqual(detail, self.custom_message) self.assertEqual(detail, self.custom_message)
self.assertEqual(code, self.custom_code)
def test_permission_denied_for_object(self): def test_permission_denied_for_object(self):
response = denied_object_view(self.request, pk=1) response = denied_object_view(self.request, pk=1)
detail = response.data.get('detail') detail = response.data.get('detail')
code = response.data.get('code')
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertNotEqual(detail, self.custom_message) self.assertNotEqual(detail, self.custom_message)
self.assertNotEqual(code, self.custom_code)
def test_permission_denied_for_object_with_custom_detail(self): def test_permission_denied_for_object_with_custom_detail(self):
response = denied_object_view_with_detail(self.request, pk=1) response = denied_object_view_with_detail(self.request, pk=1)
detail = response.data.get('detail') detail = response.data.get('detail')
code = response.data.get('code')
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertEqual(detail, self.custom_message) self.assertEqual(detail, self.custom_message)
self.assertEqual(code, self.custom_code)
class PermissionsCompositionTests(TestCase): class PermissionsCompositionTests(TestCase):