Fix locale and language not updating on edit or on login

This commit is contained in:
Roberto Rosario
2015-07-04 04:36:55 -04:00
parent fa4cb686fb
commit 8f30932b6f
3 changed files with 13 additions and 5 deletions

View File

@@ -61,6 +61,5 @@ class CommonApp(MayanAppConfig):
],
sources=['common:current_user_details', 'common:current_user_edit', 'common:current_user_locale_profile_details', 'common:current_user_locale_profile_edit', 'authentication:password_change_view', 'common:setup_list', 'common:tools_list']
)
user_logged_in.connect(user_locale_profile_session_config, dispatch_uid='user_locale_profile_session_config', sender=settings.AUTH_USER_MODEL)
user_logged_in.connect(user_locale_profile_session_config, dispatch_uid='user_locale_profile_session_config')
post_save.connect(user_locale_profile_create, dispatch_uid='user_locale_profile_create', sender=settings.AUTH_USER_MODEL)

View File

@@ -1,14 +1,19 @@
from __future__ import unicode_literals
from django.conf import settings
from django.utils import timezone, translation
from .models import UserLocaleProfile
def user_locale_profile_session_config(sender, request, user, **kwargs):
user_locale_profile, created = UserLocaleProfile.objects.get_or_create(user=user)
timezone.activate(user_locale_profile.timezone)
translation.activate(user_locale_profile.language)
if hasattr(request, 'session'):
user_locale_profile, created = UserLocaleProfile.objects.get_or_create(user=user)
request.session['django_language'] = user_locale_profile.language
request.session[translation.LANGUAGE_SESSION_KEY] = user_locale_profile.language
request.session['django_timezone'] = user_locale_profile.timezone
else:
request.set_cookie(settings.LANGUAGE_COOKIE_NAME, user_locale_profile.language)

View File

@@ -11,6 +11,7 @@ from django.core.urlresolvers import reverse
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.utils import timezone, translation
from django.utils.http import urlencode
from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView, TemplateView
@@ -548,8 +549,11 @@ def current_user_locale_profile_edit(request):
if form.is_valid():
form.save()
timezone.activate(form.cleaned_data['timezone'])
translation.activate(form.cleaned_data['language'])
if hasattr(request, 'session'):
request.session['django_language'] = form.cleaned_data['language']
request.session[translation.LANGUAGE_SESSION_KEY] = form.cleaned_data['language']
request.session['django_timezone'] = form.cleaned_data['timezone']
else:
request.set_cookie(settings.LANGUAGE_COOKIE_NAME, form.cleaned_data['language'])