mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-03-16 22:10:28 +00:00
fix: Language chosen in user preferences persists on subsequent requests (#4310)
This commit is contained in:
parent
6a1a46b612
commit
df1608b080
5 changed files with 24 additions and 8 deletions
|
|
@ -31,6 +31,7 @@ Changelog
|
|||
* Fix: Remove ASCII conversion from Postgres search backend, to support stemming in non-Latin alphabets (Pavel Denisov)
|
||||
* Fix: Prevent tab labels on page edit view from being cut off on very narrow screens (Kevin Howbrook)
|
||||
* Fix: Very long words in page listings are now broken where necessary (Kevin Howbrook)
|
||||
* Fix: Language chosen in user preferences no longer persists on subsequent requests (Bojan Mihelac)
|
||||
|
||||
|
||||
2.6.1 (05.08.2019)
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ Bug fixes
|
|||
* Remove ASCII conversion from Postgres search backend, to support stemming in non-Latin alphabets (Pavel Denisov)
|
||||
* Prevent tab labels on page edit view from being cut off on very narrow screens (Kevin Howbrook)
|
||||
* Very long words in page listings are now broken where necessary (Kevin Howbrook)
|
||||
* Language chosen in user preferences no longer persists on subsequent requests (Bojan Mihelac)
|
||||
|
||||
|
||||
Upgrade considerations
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ from django.db.models import Q
|
|||
from django.shortcuts import redirect
|
||||
from django.urls import reverse
|
||||
from django.utils.timezone import activate as activate_tz
|
||||
from django.utils.translation import activate as activate_lang
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import override
|
||||
|
||||
from wagtail.admin import messages
|
||||
from wagtail.core.models import GroupPagePermission
|
||||
|
|
@ -154,13 +154,17 @@ def require_admin_access(view_func):
|
|||
return reject_request(request)
|
||||
|
||||
if user.has_perms(['wagtailadmin.access_admin']):
|
||||
preferred_language = None
|
||||
if hasattr(user, 'wagtail_userprofile'):
|
||||
language = user.wagtail_userprofile.get_preferred_language()
|
||||
l18n.set_language(language)
|
||||
activate_lang(language)
|
||||
preferred_language = user.wagtail_userprofile.get_preferred_language()
|
||||
l18n.set_language(preferred_language)
|
||||
time_zone = user.wagtail_userprofile.get_current_time_zone()
|
||||
activate_tz(time_zone)
|
||||
return view_func(request, *args, **kwargs)
|
||||
if preferred_language:
|
||||
with override(preferred_language):
|
||||
return view_func(request, *args, **kwargs)
|
||||
else:
|
||||
return view_func(request, *args, **kwargs)
|
||||
|
||||
if not request.is_ajax():
|
||||
messages.error(request, _('You do not have permission to access the admin'))
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ from django.contrib.auth.tokens import PasswordResetTokenGenerator
|
|||
from django.core import mail
|
||||
from django.test import TestCase, override_settings
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import get_language
|
||||
|
||||
from wagtail.admin.locale import (
|
||||
WAGTAILADMIN_PROVIDED_LANGUAGES, get_available_admin_languages, get_available_admin_time_zones)
|
||||
|
|
@ -411,6 +412,15 @@ class TestAccountSection(TestCase, WagtailTestUtils):
|
|||
# Check that the current language is assumed as English
|
||||
self.assertEqual(profile.get_preferred_language(), "en")
|
||||
|
||||
def test_language_preferences_reapplies_original_language(self):
|
||||
post_data = {
|
||||
'preferred_language': 'es'
|
||||
}
|
||||
response = self.client.post(reverse('wagtailadmin_account_language_preferences'), post_data)
|
||||
self.assertRedirects(response, reverse('wagtailadmin_account'))
|
||||
|
||||
self.assertEqual(get_language(), "en")
|
||||
|
||||
def test_change_name(self):
|
||||
"""
|
||||
This tests that the change name view responds with a change name page
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from django.http import Http404
|
|||
from django.shortcuts import redirect, render
|
||||
from django.urls import reverse, reverse_lazy
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import activate
|
||||
from django.utils.translation import override
|
||||
|
||||
from wagtail.admin.forms.auth import LoginForm, PasswordResetForm
|
||||
from wagtail.core import hooks
|
||||
|
|
@ -174,8 +174,8 @@ def language_preferences(request):
|
|||
user_profile = form.save()
|
||||
# This will set the language only for this request/thread
|
||||
# (so that the 'success' messages is in the right language)
|
||||
activate(user_profile.get_preferred_language())
|
||||
messages.success(request, _("Your preferences have been updated."))
|
||||
with override(user_profile.get_preferred_language()):
|
||||
messages.success(request, _("Your preferences have been updated."))
|
||||
return redirect('wagtailadmin_account')
|
||||
else:
|
||||
form = PreferredLanguageForm(instance=UserProfile.get_for_user(request.user))
|
||||
|
|
|
|||
Loading…
Reference in a new issue