From ec5d6324f86d350cc516702e75d565a19aa20a5a Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 4 Nov 2026 14:13:41 +1100 Subject: [PATCH] [bug] Fix 'get_user_language' (#13180) - The 'LANGUAGE" user setting does not exist - Introduced in https://github.com/inventree/InvenTree/pull/12944 --- src/backend/InvenTree/common/notifications.py | 25 ++----------------- .../InvenTree/common/test_notifications.py | 8 ++---- 2 files changed, 4 insertions(+), 29 deletions(-) diff --git a/src/backend/InvenTree/common/notifications.py b/src/backend/InvenTree/common/notifications.py index f4a1696583..a05d7d9876 100644 --- a/src/backend/InvenTree/common/notifications.py +++ b/src/backend/InvenTree/common/notifications.py @@ -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') diff --git a/src/backend/InvenTree/common/test_notifications.py b/src/backend/InvenTree/common/test_notifications.py index f7a41bb98c..dead2bc117 100644 --- a/src/backend/InvenTree/common/test_notifications.py +++ b/src/backend/InvenTree/common/test_notifications.py @@ -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."""