view middleware/http.py @ 213:6f285552a9d0 default tip

Remove requirement to be logged in to see comments
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Thu, 16 Jan 2014 10:59:05 -0500
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))