[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:
Oliver authored and GitHub committed 2026-11-04 14:13:41 +11:00
1 parent 6d1a26d540
commit ec5d6324f8
2 files changed
+4 -29

No files matched your search

+2 -23
View File
@@ -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."""