pytask/middleware/exceptions.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Tue, 01 Feb 2011 02:31:53 +0530
changeset 540 b07d52d49db7
parent 539 59e032315ab9
child 541 a1007eb3fff9
permissions -rwxr-xr-x
Initial tags for the chapters should not contain Textbook as the keyword.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
539
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     1
"""Module containing the middleware that processes exceptions for PyTask.
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     2
"""
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     3
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     4
__authors__ = [
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     5
    '"Madhusudan.C.S" <madhusudancs@fossee.in>',
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     6
    ]
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     7
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     8
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     9
from django.http import HttpResponse
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    10
from django.template import loader
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    11
from django.template import RequestContext
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    12
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    13
from pytask.helpers.exceptions import UnauthorizedAccess
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    14
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    15
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    16
class ExceptionMiddleware(object):
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    17
    """Middleware definition that processes exceptions raised in PyTaskViews.
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    18
    """
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    19
  
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    20
    def process_exception(self, request, exception):
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    21
        """Process the exception raised.
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    22
        """
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    23
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    24
        if isinstance(exception, UnauthorizedAccess):
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    25
            template = loader.get_template('error.html')
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    26
            context = RequestContext(request, {
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    27
              'error_message': exception.message
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    28
              })
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    29
            return HttpResponse(template.render(context))
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    30
    
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    31
        # let Django handle it
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    32
        return None