mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-03-25 02:41:15 +01:00
test
This commit is contained in:
@@ -259,6 +259,16 @@ SPECTACULAR_SETTINGS = {
|
||||
# OTHER SETTINGS
|
||||
}
|
||||
|
||||
# CACHALOT_CACHE_RANDOM = True
|
||||
# CACHALOT_QUERY_KEYGEN = "cachalot.utils.get_query_cache_key"
|
||||
# CACHALOT_TIMEOUT = 60 * 60 * 24 # 24 hours, or adjust as needed
|
||||
LOGGING = {
|
||||
"version": 1,
|
||||
"disable_existing_loggers": False,
|
||||
"handlers": {
|
||||
"console": {
|
||||
"class": "logging.StreamHandler",
|
||||
},
|
||||
},
|
||||
"root": {
|
||||
"handlers": ["console"],
|
||||
"level": "INFO",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ from django.utils import timezone, translation
|
||||
from django.utils.cache import patch_vary_headers
|
||||
from django.utils.translation import activate
|
||||
from cachalot.api import invalidate
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
||||
|
||||
class LocalizationMiddleware:
|
||||
@@ -11,6 +14,7 @@ class LocalizationMiddleware:
|
||||
|
||||
def __call__(self, request):
|
||||
tz = request.COOKIES.get("mytz")
|
||||
logger.info("tz: %s", tz)
|
||||
if request.user.is_authenticated:
|
||||
user_settings = request.user.settings
|
||||
user_language = user_settings.language
|
||||
@@ -19,36 +23,21 @@ class LocalizationMiddleware:
|
||||
user_language = "auto"
|
||||
user_timezone = "auto"
|
||||
|
||||
# Set timezone
|
||||
logger.info("lang: %s", user_language)
|
||||
logger.info("timezone: %s", user_timezone)
|
||||
|
||||
if tz and user_timezone == "auto":
|
||||
timezone_to_activate = zoneinfo.ZoneInfo(tz)
|
||||
timezone.activate(zoneinfo.ZoneInfo(tz))
|
||||
elif user_timezone != "auto":
|
||||
timezone_to_activate = zoneinfo.ZoneInfo(user_timezone)
|
||||
timezone.activate(zoneinfo.ZoneInfo(user_timezone))
|
||||
else:
|
||||
timezone_to_activate = zoneinfo.ZoneInfo("UTC")
|
||||
timezone.activate(zoneinfo.ZoneInfo("UTC"))
|
||||
|
||||
# Set language
|
||||
if user_language and user_language != "auto":
|
||||
language_to_activate = user_language
|
||||
activate(user_language)
|
||||
else:
|
||||
language_to_activate = translation.get_language_from_request(request)
|
||||
detected_language = translation.get_language_from_request(request)
|
||||
logger.info("detected_language: %s", detected_language)
|
||||
activate(detected_language)
|
||||
|
||||
# Check if timezone or language has changed
|
||||
if (
|
||||
getattr(request, "timezone", None) != timezone_to_activate
|
||||
or getattr(request, "language", None) != language_to_activate
|
||||
):
|
||||
# Invalidate cachalot cache
|
||||
invalidate()
|
||||
|
||||
# Apply timezone and language to the request
|
||||
request.timezone = timezone_to_activate
|
||||
request.language = language_to_activate
|
||||
|
||||
# Wrap the response in a custom function to handle activation
|
||||
def wrapped_response(request):
|
||||
with timezone.override(request.timezone):
|
||||
with translation.override(request.language):
|
||||
return self.get_response(request)
|
||||
|
||||
return wrapped_response(request)
|
||||
return self.get_response(request)
|
||||
|
||||
Reference in New Issue
Block a user