errorpages.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.shortcuts import render
  2. def _error_page(request, code, message=None):
  3. response = render(request,
  4. 'misago/front/%s.html' % code,
  5. {'message': message})
  6. response.status_code = code
  7. return response
  8. def permission_denied(request, message=None):
  9. return _error_page(request, 403, message)
  10. def page_not_found(request, message=None):
  11. return _error_page(request, 404, message)
  12. """
  13. Decorators for custom error page handlers
  14. """
  15. from misago.views.utils import is_request_to_misago
  16. def shared_403_exception_handler(f):
  17. def page_decorator(request, *args, **kwargs):
  18. if is_request_to_misago(request):
  19. return permission_denied(request)
  20. else:
  21. return f(request, *args, **kwargs)
  22. return page_decorator
  23. def shared_404_exception_handler(f):
  24. def page_decorator(request, *args, **kwargs):
  25. if is_request_to_misago(request):
  26. return page_not_found(request)
  27. else:
  28. return f(request, *args, **kwargs)
  29. return page_decorator