From dbf0c00cb96ef27e49abfc0b54b51c6f65c95c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A6var=20=C3=96fj=C3=B6r=C3=B0=20Magn=C3=BAsson?= Date: Fri, 11 Nov 2022 10:05:01 +0000 Subject: [PATCH 1/3] Fixes #262. Move the homepage lookup after response handling so that we have access to the url resolver. Then check if the requested path belongs to i18n_patterns. --- apps/core/middleware.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/core/middleware.py b/apps/core/middleware.py index a91c6096..dc41369c 100644 --- a/apps/core/middleware.py +++ b/apps/core/middleware.py @@ -1,18 +1,25 @@ from django.http import Http404 +from django.urls import LocalePrefixPattern from django.utils.translation import activate, get_language from apps.core.models import HomePage +pattern = LocalePrefixPattern() + class ValidateLocaleMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): - try: - HomePage.objects.get(locale__language_code=get_language(), live=True) - except HomePage.DoesNotExist: - activate("en-latest") - raise Http404() response = self.get_response(request) + if request.resolver_match: + # Check if the path is in the i18n_patterns + if pattern.match(request.resolver_match.route): + try: + HomePage.objects.get(locale__language_code=get_language(), live=True) + except HomePage.DoesNotExist: + # Activate English so that we have a site menu + activate("en-latest") + raise Http404() return response From 63ccc56ec43e5dbf3fbc748d4e6212df0f54a019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A6var=20=C3=96fj=C3=B6r=C3=B0=20Magn=C3=BAsson?= Date: Fri, 11 Nov 2022 10:14:23 +0000 Subject: [PATCH 2/3] Lint python --- apps/core/middleware.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/core/middleware.py b/apps/core/middleware.py index dc41369c..c4a4b966 100644 --- a/apps/core/middleware.py +++ b/apps/core/middleware.py @@ -14,10 +14,11 @@ def __init__(self, get_response): def __call__(self, request): response = self.get_response(request) if request.resolver_match: - # Check if the path is in the i18n_patterns + # Check if the path is in the i18n_patterns if pattern.match(request.resolver_match.route): try: - HomePage.objects.get(locale__language_code=get_language(), live=True) + HomePage.objects.get( + locale__language_code=get_language(), live=True) except HomePage.DoesNotExist: # Activate English so that we have a site menu activate("en-latest") From 1b29d5834e2c6bf790ee63e84e32deaf22152f8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A6var=20=C3=96fj=C3=B6r=C3=B0=20Magn=C3=BAsson?= Date: Fri, 11 Nov 2022 10:29:33 +0000 Subject: [PATCH 3/3] Lint python --- apps/core/middleware.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/core/middleware.py b/apps/core/middleware.py index c4a4b966..8bc409e2 100644 --- a/apps/core/middleware.py +++ b/apps/core/middleware.py @@ -18,7 +18,8 @@ def __call__(self, request): if pattern.match(request.resolver_match.route): try: HomePage.objects.get( - locale__language_code=get_language(), live=True) + locale__language_code=get_language(), live=True + ) except HomePage.DoesNotExist: # Activate English so that we have a site menu activate("en-latest")