pytask/middleware/exceptions.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Tue, 01 Feb 2011 04:32:53 +0530
changeset 541 a1007eb3fff9
parent 539 59e032315ab9
permissions -rwxr-xr-x
Add a base exception class and make unauthorization class a subclass.
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
541
a1007eb3fff9 Add a base exception class and make unauthorization class a subclass.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 539
diff changeset
    13
from pytask.helpers.exceptions import PyTaskException
539
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    14
from pytask.helpers.exceptions import UnauthorizedAccess
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
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    17
class ExceptionMiddleware(object):
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    18
    """Middleware definition that processes exceptions raised in PyTaskViews.
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
  
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    21
    def process_exception(self, request, exception):
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    22
        """Process the exception raised.
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
541
a1007eb3fff9 Add a base exception class and make unauthorization class a subclass.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 539
diff changeset
    25
        if (isinstance(exception, PyTaskException) or 
a1007eb3fff9 Add a base exception class and make unauthorization class a subclass.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 539
diff changeset
    26
          isinstance(exception, UnauthorizedAccess)):
539
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    27
            template = loader.get_template('error.html')
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    28
            context = RequestContext(request, {
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    29
              'error_message': exception.message
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
            return HttpResponse(template.render(context))
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    32
    
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    33
        # let Django handle it
59e032315ab9 Add exception middleware and related files.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    34
        return None