From 776e1b23ce77651e4b8636600d580e2c58282332 Mon Sep 17 00:00:00 2001 From: Herculino Trotta Date: Sun, 13 Oct 2024 13:52:47 -0300 Subject: [PATCH] feat: create user settings on localization middleware --- app/apps/common/middleware/localization.py | 4 +++- app/apps/users/utils/__init__.py | 0 app/apps/users/utils/user_settings.py | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 app/apps/users/utils/__init__.py create mode 100644 app/apps/users/utils/user_settings.py diff --git a/app/apps/common/middleware/localization.py b/app/apps/common/middleware/localization.py index 8ab99f5..76c43ac 100644 --- a/app/apps/common/middleware/localization.py +++ b/app/apps/common/middleware/localization.py @@ -2,6 +2,8 @@ import zoneinfo from django.utils import timezone from django.utils.translation import activate +from apps.users.utils.user_settings import ensure_user_settings + class LocalizationMiddleware: def __init__(self, get_response): @@ -10,7 +12,7 @@ class LocalizationMiddleware: def __call__(self, request): tz = request.COOKIES.get("mytz") if request.user.is_authenticated: - user_settings = request.user.settings + user_settings = ensure_user_settings(request.user) user_language = user_settings.language user_timezone = user_settings.timezone else: diff --git a/app/apps/users/utils/__init__.py b/app/apps/users/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/apps/users/utils/user_settings.py b/app/apps/users/utils/user_settings.py new file mode 100644 index 0000000..7003bf5 --- /dev/null +++ b/app/apps/users/utils/user_settings.py @@ -0,0 +1,16 @@ +from django.contrib.auth import get_user_model +from apps.users.models import UserSettings + + +User = get_user_model() + + +def ensure_user_settings(user): + """ + Check if the given user has a UserSettings model. + If not, create one. + """ + if not hasattr(user, "settings"): + UserSettings.objects.create(user=user) + + return user.settings