From 1fa80944443d504c875719513fa8cf1625d5ed08 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 11 Mar 2011 02:59:23 -0400 Subject: [PATCH] Dont't raise PermissionDenied exception, even while debugging --- .../middleware/permissiondeniedmiddleware.py | 57 +++++++++---------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/apps/permissions/middleware/permissiondeniedmiddleware.py b/apps/permissions/middleware/permissiondeniedmiddleware.py index 508db6b882..e4e0cac081 100644 --- a/apps/permissions/middleware/permissiondeniedmiddleware.py +++ b/apps/permissions/middleware/permissiondeniedmiddleware.py @@ -8,36 +8,33 @@ from django.utils.importlib import import_module class PermissionDeniedMiddleware(object): def process_exception(self, request, exception): if isinstance(exception, PermissionDenied): - if settings.DEBUG: - raise PermissionDenied - else: + try: + # Handle import error but allow any type error from view + callback = getattr(import_module(settings.ROOT_URLCONF),'handler403') + return callback(request,exception) + except (ImportError,AttributeError): + # Try to get a 403 template try: - # Handle import error but allow any type error from view - callback = getattr(import_module(settings.ROOT_URLCONF),'handler403') - return callback(request,exception) - except (ImportError,AttributeError): - # Try to get a 403 template - try: - # First look for a user-defined template named "403.html" - t = loader.get_template('403.html') - except TemplateDoesNotExist: - # If a template doesn't exist in the projct, use the following hardcoded template - t = Template("""{% load i18n %} - - - - {% trans "403 ERROR: Access denied" %} - - -

{% trans "Access Denied (403)" %}

- {% trans "We're sorry, but you are not authorized to view this page." %} - - """) + # First look for a user-defined template named "403.html" + t = loader.get_template('403.html') + except TemplateDoesNotExist: + # If a template doesn't exist in the projct, use the following hardcoded template + t = Template("""{% load i18n %} + + + + {% trans "403 ERROR: Access denied" %} + + +

{% trans "Access Denied (403)" %}

+ {% trans "We're sorry, but you are not authorized to view this page." %} + + """) - # Now use context and render template - c = RequestContext(request, { - 'message': exception.message - }) + # Now use context and render template + c = RequestContext(request, { + 'message': exception.message + }) - return HttpResponseForbidden(t.render(c)) + return HttpResponseForbidden(t.render(c))