Merge "Store user settings in persistent cookies as well as the session"

This commit is contained in:
Jenkins 2013-09-16 22:54:36 +00:00 committed by Gerrit Code Review
commit 0e7d1572ef
3 changed files with 24 additions and 5 deletions

View File

@ -27,6 +27,12 @@ from horizon import forms
from horizon import messages
def _one_year():
now = datetime.utcnow()
return datetime(now.year + 1, now.month, now.day, now.hour,
now.minute, now.second, now.microsecond, now.tzinfo)
class UserSettingsForm(forms.SelfHandlingForm):
language = forms.ChoiceField(label=_("Language"))
timezone = forms.ChoiceField(label=_("Timezone"))
@ -72,14 +78,18 @@ class UserSettingsForm(forms.SelfHandlingForm):
if lang_code and translation.check_for_language(lang_code):
if hasattr(request, 'session'):
request.session['django_language'] = lang_code
else:
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code,
expires=_one_year())
# Timezone
request.session['django_timezone'] = pytz.timezone(
data['timezone']).zone
response.set_cookie('django_timezone', data['timezone'],
expires=_one_year())
request.session['horizon_pagesize'] = data['pagesize']
response.set_cookie('horizon_pagesize', data['pagesize'],
expires=_one_year())
with translation.override(lang_code):
messages.success(request,

View File

@ -25,11 +25,19 @@ class UserSettingsView(forms.ModalFormView):
template_name = 'settings/user/settings.html'
def get_initial(self):
return {'language': self.request.LANGUAGE_CODE,
'timezone': self.request.session.get('django_timezone', 'UTC'),
return {'language': self.request.session.get(
settings.LANGUAGE_COOKIE_NAME,
self.request.COOKIES.get(settings.LANGUAGE_COOKIE_NAME,
self.request.LANGUAGE_CODE)),
'timezone': self.request.session.get(
'django_timezone',
self.request.COOKIES.get('django_timezone', 'UTC')),
'pagesize': self.request.session.get(
'horizon_pagesize',
getattr(settings, 'API_RESULT_PAGE_SIZE', 20))}
self.request.COOKIES.get(
'horizon_pagesize',
getattr(settings,
'API_RESULT_PAGE_SIZE', 20)))}
def form_valid(self, form):
return form.handle(self.request, form.cleaned_data)

View File

@ -198,6 +198,7 @@ LANGUAGES = (
('zh-tw', gettext_noop('Traditional Chinese')),
)
LANGUAGE_CODE = 'en'
LANGUAGE_COOKIE_NAME = 'horizon_language'
USE_I18N = True
USE_L10N = True
USE_TZ = True