diff options
| author | Anubhav Joshi <anubhav9042@gmail.com> | 2014-06-22 09:02:14 +0530 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-06-23 15:27:25 -0400 |
| commit | 7f76251fb7ea8593a47ab55ac22d6cb500b39e2f (patch) | |
| tree | 7f2efa9a29f5742ba4cd83d0e9a0c8da73cb3820 /django | |
| parent | bcd2e6c697ee29ab1c1240a6b30281d53329b333 (diff) | |
Refactored common code in handlers/base.py and urlresolvers.py
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/handlers/base.py | 37 | ||||
| -rw-r--r-- | django/core/urlresolvers.py | 14 |
2 files changed, 15 insertions, 36 deletions
diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py index 26788fd58a..2d1d61ce18 100644 --- a/django/core/handlers/base.py +++ b/django/core/handlers/base.py @@ -70,6 +70,16 @@ class BaseHandler(object): view = transaction.atomic(using=db.alias)(view) return view + def get_exception_response(self, request, resolver, status_code): + try: + callback, param_dict = resolver.resolve_error_handler(status_code) + response = callback(request, **param_dict) + except: + signals.got_request_exception.send(sender=self.__class__, request=request) + response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) + + return response + def get_response(self, request): "Returns an HttpResponse object for the given HttpRequest" @@ -151,12 +161,7 @@ class BaseHandler(object): if settings.DEBUG: response = debug.technical_404_response(request, e) else: - try: - callback, param_dict = resolver.resolve404() - response = callback(request, **param_dict) - except: - signals.got_request_exception.send(sender=self.__class__, request=request) - response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) + response = self.get_exception_response(request, resolver, 404) except PermissionDenied: logger.warning( @@ -165,14 +170,7 @@ class BaseHandler(object): 'status_code': 403, 'request': request }) - try: - callback, param_dict = resolver.resolve403() - response = callback(request, **param_dict) - except: - signals.got_request_exception.send( - sender=self.__class__, request=request) - response = self.handle_uncaught_exception(request, - resolver, sys.exc_info()) + response = self.get_exception_response(request, resolver, 403) except SuspiciousOperation as e: # The request logger receives events for any problematic request @@ -186,14 +184,7 @@ class BaseHandler(object): 'request': request }) - try: - callback, param_dict = resolver.resolve400() - response = callback(request, **param_dict) - except: - signals.got_request_exception.send( - sender=self.__class__, request=request) - response = self.handle_uncaught_exception(request, - resolver, sys.exc_info()) + response = self.get_exception_response(request, resolver, 400) except SystemExit: # Allow sys.exit() to actually exit. See tickets #1023 and #4701 @@ -251,7 +242,7 @@ class BaseHandler(object): if resolver.urlconf_module is None: six.reraise(*exc_info) # Return an HttpResponse that displays a friendly error message. - callback, param_dict = resolver.resolve500() + callback, param_dict = resolver.resolve_error_handler(500) return callback(request, **param_dict) def apply_response_fixes(self, request, response): diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py index dd98b7bb03..e8564ecc76 100644 --- a/django/core/urlresolvers.py +++ b/django/core/urlresolvers.py @@ -393,7 +393,7 @@ class RegexURLResolver(LocaleRegexProvider): raise ImproperlyConfigured(msg.format(name=self.urlconf_name)) return patterns - def _resolve_special(self, view_type): + def resolve_error_handler(self, view_type): callback = getattr(self.urlconf_module, 'handler%s' % view_type, None) if not callback: # No handler specified in file; use default @@ -402,18 +402,6 @@ class RegexURLResolver(LocaleRegexProvider): callback = getattr(urls, 'handler%s' % view_type) return get_callable(callback), {} - def resolve400(self): - return self._resolve_special('400') - - def resolve403(self): - return self._resolve_special('403') - - def resolve404(self): - return self._resolve_special('404') - - def resolve500(self): - return self._resolve_special('500') - def reverse(self, lookup_view, *args, **kwargs): return self._reverse_with_prefix(lookup_view, '', *args, **kwargs) |
