Browse Source

Use LocaleMiddleware's language as fallback language for user profiles w/o prefferred language

Also includes setting "en" as explicit language for tests
Benjamin Bach 6 years ago
parent
commit
b3f1f50fba

+ 5 - 0
conftest.py

@@ -38,6 +38,11 @@ def pytest_configure(config):
     os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wagtail.tests.settings')
     django.setup()
 
+    # Activate a language: This affects HTTP header HTTP_ACCEPT_LANGUAGE sent by
+    # the Django test client.
+    from django.utils import translation
+    translation.activate("en")
+
     from wagtail.tests.settings import MEDIA_ROOT, STATIC_ROOT
     shutil.rmtree(STATIC_ROOT, ignore_errors=True)
     shutil.rmtree(MEDIA_ROOT, ignore_errors=True)

+ 3 - 0
wagtail/admin/tests/test_account_management.py

@@ -397,6 +397,9 @@ class TestAccountSection(TestCase, WagtailTestUtils):
         # Check that the language preferences are stored
         self.assertEqual(profile.preferred_language, '')
 
+        # Check that the current language is assumed as English
+        self.assertEqual(profile.get_preferred_language(), "en")
+
     @override_settings(WAGTAILADMIN_PERMITTED_LANGUAGES=[('en', 'English'), ('es', 'Spanish')])
     def test_available_admin_languages_with_permitted_languages(self):
         self.assertListEqual(get_available_admin_languages(), [('en', 'English'), ('es', 'Spanish')])

+ 3 - 0
wagtail/tests/settings.py

@@ -49,6 +49,8 @@ STATICFILES_FINDERS = (
 
 USE_TZ = True
 
+LANGUAGE_CODE = "en"
+
 TEMPLATES = [
     {
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
@@ -88,6 +90,7 @@ MIDDLEWARE = (
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
+    'django.middleware.locale.LocaleMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',

+ 2 - 1
wagtail/users/models.py

@@ -4,6 +4,7 @@ import uuid
 from django.conf import settings
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import get_language
 
 
 def upload_avatar_to(instance, filename):
@@ -63,7 +64,7 @@ class UserProfile(models.Model):
         return cls.objects.get_or_create(user=user)[0]
 
     def get_preferred_language(self):
-        return self.preferred_language or settings.LANGUAGE_CODE
+        return self.preferred_language or get_language()
 
     def get_current_time_zone(self):
         return self.current_time_zone or settings.TIME_ZONE