hotpocket/services/backend/hotpocket_backend/apps/ui/views/errors.py
Tomek Wójcik b4338e2769
Some checks failed
CI / Checks (push) Failing after 13m2s
Release v1.0.0
2025-08-20 21:00:50 +02:00

87 lines
2.4 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import annotations
import logging
from django.http import (
HttpRequest,
HttpResponseBadRequest,
HttpResponseForbidden,
HttpResponseNotFound,
HttpResponseServerError,
)
from django.template.loader import render_to_string
from django.views.decorators.csrf import requires_csrf_token
from django.views.defaults import (
ERROR_400_TEMPLATE_NAME,
ERROR_403_TEMPLATE_NAME,
ERROR_404_TEMPLATE_NAME,
ERROR_500_TEMPLATE_NAME,
)
LOGGER = logging.getLogger(__name__)
@requires_csrf_token
def page_not_found(request: HttpRequest,
exception: Exception,
template_name: str = ERROR_404_TEMPLATE_NAME,
) -> HttpResponseNotFound:
if exception:
LOGGER.error('Exception: %s', exception, exc_info=exception)
return HttpResponseNotFound(render_to_string(
'ui/errors/page_not_found.html',
context={},
request=request,
))
@requires_csrf_token
def server_error(request: HttpRequest,
template_name: str = ERROR_500_TEMPLATE_NAME,
) -> HttpResponseServerError:
return HttpResponseServerError(render_to_string(
'ui/errors/internal_server_error.html',
context={},
request=request,
))
@requires_csrf_token
def bad_request(request: HttpRequest,
exception: Exception,
template_name: str = ERROR_400_TEMPLATE_NAME,
) -> HttpResponseBadRequest:
if exception:
LOGGER.error('Exception: %s', exception, exc_info=exception)
return HttpResponseBadRequest(render_to_string(
'ui/errors/internal_server_error.html',
context={},
request=request,
))
@requires_csrf_token
def permission_denied(request: HttpRequest,
exception: Exception,
template_name: str = ERROR_403_TEMPLATE_NAME,
) -> HttpResponseForbidden:
if exception:
LOGGER.error('Exception: %s', exception, exc_info=exception)
return HttpResponseForbidden(render_to_string(
'ui/errors/internal_server_error.html',
context={},
request=request,
))
def csrf_failure(request: HttpRequest, reason: str = ''):
return HttpResponseBadRequest(render_to_string(
'ui/errors/internal_server_error.html',
context={},
request=request,
))