mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-04-25 10:08:36 +02:00
feat: add middleware for setting user language and timezone when set as setting
This commit is contained in:
@@ -73,7 +73,6 @@ MIDDLEWARE = [
|
|||||||
"django.middleware.security.SecurityMiddleware",
|
"django.middleware.security.SecurityMiddleware",
|
||||||
"whitenoise.middleware.WhiteNoiseMiddleware",
|
"whitenoise.middleware.WhiteNoiseMiddleware",
|
||||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||||
"apps.common.middleware.timezone.TimezoneMiddleware",
|
|
||||||
"django.middleware.locale.LocaleMiddleware",
|
"django.middleware.locale.LocaleMiddleware",
|
||||||
"django.middleware.common.CommonMiddleware",
|
"django.middleware.common.CommonMiddleware",
|
||||||
"django.middleware.csrf.CsrfViewMiddleware",
|
"django.middleware.csrf.CsrfViewMiddleware",
|
||||||
@@ -82,6 +81,7 @@ MIDDLEWARE = [
|
|||||||
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||||
"django_browser_reload.middleware.BrowserReloadMiddleware",
|
"django_browser_reload.middleware.BrowserReloadMiddleware",
|
||||||
"hijack.middleware.HijackUserMiddleware",
|
"hijack.middleware.HijackUserMiddleware",
|
||||||
|
"apps.common.middleware.localization.LocalizationMiddleware",
|
||||||
]
|
]
|
||||||
|
|
||||||
ROOT_URLCONF = "WYGIWYH.urls"
|
ROOT_URLCONF = "WYGIWYH.urls"
|
||||||
|
|||||||
30
app/apps/common/middleware/localization.py
Normal file
30
app/apps/common/middleware/localization.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import zoneinfo
|
||||||
|
from django.utils import timezone
|
||||||
|
from django.utils.translation import activate
|
||||||
|
|
||||||
|
|
||||||
|
class LocalizationMiddleware:
|
||||||
|
def __init__(self, get_response):
|
||||||
|
self.get_response = get_response
|
||||||
|
|
||||||
|
def __call__(self, request):
|
||||||
|
tz = request.COOKIES.get("mytz")
|
||||||
|
if request.user.is_authenticated:
|
||||||
|
user_settings = request.user.settings
|
||||||
|
user_language = user_settings.language
|
||||||
|
user_timezone = user_settings.timezone
|
||||||
|
else:
|
||||||
|
user_language = "auto"
|
||||||
|
user_timezone = "auto"
|
||||||
|
|
||||||
|
if tz and user_timezone == "auto":
|
||||||
|
timezone.activate(zoneinfo.ZoneInfo(tz))
|
||||||
|
elif user_timezone != "auto":
|
||||||
|
timezone.activate(zoneinfo.ZoneInfo(user_timezone))
|
||||||
|
else:
|
||||||
|
timezone.activate(zoneinfo.ZoneInfo("UTC"))
|
||||||
|
|
||||||
|
if user_language and user_language != "auto":
|
||||||
|
activate(user_language)
|
||||||
|
|
||||||
|
return self.get_response(request)
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import zoneinfo
|
|
||||||
from django.utils import timezone
|
|
||||||
from django.shortcuts import render
|
|
||||||
|
|
||||||
|
|
||||||
class TimezoneMiddleware:
|
|
||||||
def __init__(self, get_response):
|
|
||||||
self.get_response = get_response
|
|
||||||
|
|
||||||
def __call__(self, request):
|
|
||||||
tz = request.COOKIES.get("mytz")
|
|
||||||
if tz:
|
|
||||||
timezone.activate(zoneinfo.ZoneInfo(tz))
|
|
||||||
else:
|
|
||||||
timezone.activate(zoneinfo.ZoneInfo("UTC"))
|
|
||||||
return self.get_response(request)
|
|
||||||
Reference in New Issue
Block a user