forked from CGM_Public/pretix_original
Respect language headers on error 400/404/500 pages
This commit is contained in:
@@ -30,8 +30,16 @@ from django.utils.translation import gettext as _
|
|||||||
from django.views.decorators.csrf import requires_csrf_token
|
from django.views.decorators.csrf import requires_csrf_token
|
||||||
from sentry_sdk import last_event_id
|
from sentry_sdk import last_event_id
|
||||||
|
|
||||||
|
from pretix.base.i18n import language
|
||||||
|
from pretix.base.middleware import get_language_from_request
|
||||||
|
|
||||||
|
|
||||||
def csrf_failure(request, reason=""):
|
def csrf_failure(request, reason=""):
|
||||||
|
try:
|
||||||
|
locale = get_language_from_request(request)
|
||||||
|
except:
|
||||||
|
locale = "en"
|
||||||
|
with language(locale): # Middleware might not have run, need to do this manually
|
||||||
t = get_template('csrffail.html')
|
t = get_template('csrffail.html')
|
||||||
c = {
|
c = {
|
||||||
'reason': reason,
|
'reason': reason,
|
||||||
@@ -61,6 +69,11 @@ def csrf_failure(request, reason=""):
|
|||||||
|
|
||||||
@requires_csrf_token
|
@requires_csrf_token
|
||||||
def page_not_found(request, exception):
|
def page_not_found(request, exception):
|
||||||
|
try:
|
||||||
|
locale = get_language_from_request(request)
|
||||||
|
except:
|
||||||
|
locale = "en"
|
||||||
|
with language(locale): # Middleware might not have run, need to do this manually
|
||||||
exception_repr = exception.__class__.__name__
|
exception_repr = exception.__class__.__name__
|
||||||
# Try to get an "interesting" exception message, if any (and not the ugly
|
# Try to get an "interesting" exception message, if any (and not the ugly
|
||||||
# Resolver404 dictionary)
|
# Resolver404 dictionary)
|
||||||
@@ -84,6 +97,11 @@ def page_not_found(request, exception):
|
|||||||
|
|
||||||
@requires_csrf_token
|
@requires_csrf_token
|
||||||
def server_error(request):
|
def server_error(request):
|
||||||
|
try:
|
||||||
|
locale = get_language_from_request(request)
|
||||||
|
except:
|
||||||
|
locale = "en"
|
||||||
|
with language(locale): # Middleware might not have run, need to do this manually
|
||||||
try:
|
try:
|
||||||
template = loader.get_template('500.html')
|
template = loader.get_template('500.html')
|
||||||
except TemplateDoesNotExist:
|
except TemplateDoesNotExist:
|
||||||
|
|||||||
Reference in New Issue
Block a user