views.py 868 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
from sys import exc_info

import logging

from django.template import RequestContext
from django.shortcuts import render_to_response

from .models import HumanReadableException

logger = logging.getLogger(__name__)


def handler500(request):
    cls, exception, traceback = exc_info()
    logger.exception("unhandled exception")
    ctx = {}
    if isinstance(exception, HumanReadableException):
        try:
            ctx['error'] = exception.get_user_text()
        except:
            pass
        else:
            try:
                if request.user.is_superuser():
                    ctx['error'] = exception.get_admin_text()
            except:
                pass
28 29 30 31 32 33
    try:
        resp = render_to_response("500.html", ctx, RequestContext(request))
    except:
        resp = render_to_response("500.html", ctx)
    resp.status_code = 500
    return resp