view middleware/http.py @ 176:c042d26e6936

Make Bundle description optional (SCHEMA CHANGE)
author dellsystem <ilostwaldo@gmail.com>
date Sat, 20 Oct 2012 19:24:09 -0400
parents 290dd9208cc4
children
line wrap: on
line source

from django.template import RequestContext
from django.conf import settings
from django.core.exceptions import PermissionDenied
from django.http import HttpResponseForbidden
from django.template import loader

class Http403(Exception):
    pass

def render_to_403(*args, **kwargs):
    """
        Returns a HttpResponseForbidden whose content is filled with
        the result of calling
        django.template.loader.render_to_string() with the passed
        arguments.
    """
    if not isinstance(args,list):
        args = []
        args.append('403.html')

    httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
    response = HttpResponseForbidden(loader.render_to_string(*args, **kwargs),
                                     **httpresponse_kwargs)

    return response

class Http403Middleware(object):
    def process_exception(self,request,exception):
        if isinstance(exception,Http403):
            return render_to_403(context_instance=RequestContext(request))