From 311b29a3afd593f5c79f90da45d138406e50467b Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 2 Oct 2021 10:49:22 +0000 Subject: [PATCH] Try to fix 404 --- inkscape/views.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/inkscape/views.py b/inkscape/views.py index e3dcb2a0b..53a9799b6 100644 --- a/inkscape/views.py +++ b/inkscape/views.py @@ -27,7 +27,8 @@ import re from collections import defaultdict from django.db.models import Q -from django.urls import reverse_lazy +from django.urls import reverse_lazy, NoReverseMatch +from django.core.urlresolvers import reverse, NoReverseMatch, resolve, Resolver404 from django.utils.translation import ugettext_lazy as _ from django.views import debug, defaults from django.views.generic import TemplateView, FormView @@ -71,7 +72,7 @@ class RedirectLanguage(RedirectView): for alt in language_alternator(lang): if alt in self.LANGS: if alt == 'en': - return f'/{url}{self.get_qset}' + return f'/{urldefault}{self.get_qset}' if alt != lang: return f'/{alt}/{url}{self.get_qset}' @@ -183,7 +184,13 @@ def catch_bad_language(request, exception): for match in LANG_MATCH.finditer(request.path.lstrip('/')): return RedirectLanguage.as_view()(request, **match.groupdict()) except Http404: - pass + if getattr(request, 'current_page', None): + try: + request.path = request.current_page.get_absolute_url(language='en', fallback=True) + for match in LANG_MATCH.finditer(request.path.lstrip('/')): + return RedirectLanguage.as_view()(request, **match.groupdict()) + except Http404: + pass if settings.DEBUG: return _original_technical_404(request, exception) return defaults.page_not_found(request, exception) -- GitLab