mirror of
https://github.com/inventree/InvenTree.git
synced 2026-11-10 10:57:52 +00:00
[bug] Fix 'get_user_language' (#13180)
- The 'LANGUAGE" user setting does not exist - Introduced in https://github.com/inventree/InvenTree/pull/12944
This commit is contained in:
1 parent
6d1a26d540
commit
ec5d6324f8
2 files changed
+4
-29
No files matched your search
@@ -88,32 +88,11 @@ def get_user_language(user) -> str:
|
||||
"""Return the preferred language code for a user, or default system language."""
|
||||
from django.conf import settings
|
||||
|
||||
if not user:
|
||||
return getattr(settings, 'LANGUAGE_CODE', 'en-us')
|
||||
|
||||
# 1. Try user.profile.language (UserProfile model relation)
|
||||
if profile := getattr(user, 'profile', None):
|
||||
if user and (profile := getattr(user, 'profile', None)):
|
||||
if lang := getattr(profile, 'language', None):
|
||||
return lang
|
||||
|
||||
# 2. Try user.user_profile.language (alias if present)
|
||||
if profile := getattr(user, 'user_profile', None):
|
||||
if lang := getattr(profile, 'language', None):
|
||||
return lang
|
||||
|
||||
# 3. Try InvenTreeUserSetting for 'LANGUAGE'
|
||||
try:
|
||||
from common.models import InvenTreeUserSetting
|
||||
|
||||
lang = InvenTreeUserSetting.get_setting(
|
||||
'LANGUAGE', user=user, backup_value=None
|
||||
)
|
||||
if lang:
|
||||
return lang
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# 4. Fallback to settings.LANGUAGE_CODE
|
||||
# Fallback to system default language
|
||||
return getattr(settings, 'LANGUAGE_CODE', 'en-us')
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from common.models import InvenTreeUserSetting, NotificationMessage
|
||||
from common.models import NotificationMessage
|
||||
from common.notifications import get_user_language
|
||||
from InvenTree.unit_test import InvenTreeTestCase
|
||||
from plugin.builtin.integration.core_notifications import (
|
||||
@@ -54,7 +54,7 @@ class NotificationLocaleTest(InvenTreeTestCase):
|
||||
cls.user_it2.profile.save()
|
||||
|
||||
def test_get_user_language(self):
|
||||
"""Test resolving user language from profile, settings, and defaults."""
|
||||
"""Test resolving user language from profile and defaults."""
|
||||
self.assertEqual(get_user_language(self.user_en), 'en')
|
||||
self.assertEqual(get_user_language(self.user_it), 'it')
|
||||
|
||||
@@ -69,10 +69,6 @@ class NotificationLocaleTest(InvenTreeTestCase):
|
||||
get_user_language(user_no_lang), getattr(settings, 'LANGUAGE_CODE', 'en-us')
|
||||
)
|
||||
|
||||
# Test user with InvenTreeUserSetting LANGUAGE override
|
||||
with patch.object(InvenTreeUserSetting, 'get_setting', return_value='de'):
|
||||
self.assertEqual(get_user_language(user_no_lang), 'de')
|
||||
|
||||
@patch('InvenTree.helpers_email.send_email')
|
||||
def test_email_notifications_locale_translation(self, mock_send_email):
|
||||
"""Test that notification emails are translated according to recipient user locale."""
|
||||
|
||||
Reference in new issue
Block a user