From 9d8a3966f4fdb34269d7413242cc3952c8a3c279 Mon Sep 17 00:00:00 2001 From: Anton Martyniuk Date: Sun, 29 Jun 2014 16:43:33 +0200 Subject: [PATCH 1/3] provides request object into exception handler --- rest_framework/views.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rest_framework/views.py b/rest_framework/views.py index a2668f2c0..363dda095 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -45,7 +45,7 @@ def get_view_description(view_cls, html=False): return description -def exception_handler(exc): +def exception_handler(exc, request=None): """ Returns the response that should be used for any given exception. @@ -362,7 +362,12 @@ class APIView(View): else: exc.status_code = status.HTTP_403_FORBIDDEN - response = self.settings.EXCEPTION_HANDLER(exc) + # backward compat + handler = self.settings.EXCEPTION_HANDLER + if handler.func_code.co_argcount == 1: + response = handler(exc) + else: + response = handler(exc, self.request) if response is None: raise From 75f66d829324942d73e2e23d9060e9e42a4a4131 Mon Sep 17 00:00:00 2001 From: Anton Martyniuk Date: Sun, 29 Jun 2014 17:02:15 +0200 Subject: [PATCH 2/3] drops BC support --- rest_framework/views.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/rest_framework/views.py b/rest_framework/views.py index 363dda095..be9abd13a 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -362,12 +362,7 @@ class APIView(View): else: exc.status_code = status.HTTP_403_FORBIDDEN - # backward compat - handler = self.settings.EXCEPTION_HANDLER - if handler.func_code.co_argcount == 1: - response = handler(exc) - else: - response = handler(exc, self.request) + response = self.settings.EXCEPTION_HANDLER(exc, self.request) if response is None: raise From 4878353b46bca554105e621dc140183bba19cee5 Mon Sep 17 00:00:00 2001 From: Anton Martyniuk Date: Sun, 29 Jun 2014 17:13:46 +0200 Subject: [PATCH 3/3] fixes failing tests --- rest_framework/tests/test_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/tests/test_views.py b/rest_framework/tests/test_views.py index 77b113ee5..31f6b1cd9 100644 --- a/rest_framework/tests/test_views.py +++ b/rest_framework/tests/test_views.py @@ -121,7 +121,7 @@ class TestCustomExceptionHandler(TestCase): def setUp(self): self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER - def exception_handler(exc): + def exception_handler(exc, request=None): return Response('Error!', status=status.HTTP_400_BAD_REQUEST) api_settings.EXCEPTION_HANDLER = exception_handler