import traceback from django.shortcuts import render from django.utils.translation import gettext as _ def error(request, context, status): return render(request, 'error.html', context=context, status=status) def error404(request, exception=None): # TODO: "panic: go back" return render(request, 'generic-message.html', { 'title': _('404 error'), 'message': _('Could not find page "%s"') % request.path, }, status=404) def error403(request, exception=None): return error(request, { 'id': 'unauthorized_access', 'description': _('no permission for %s') % request.path, 'code': 403, }, 403) def error500(request): return error(request, { 'id': 'invalid_state', 'description': _('corrupt page %s') % request.path, 'traceback': traceback.format_exc(), 'code': 500, }, 500)