Merge "Store user settings in persistent cookies as well as the session"
This commit is contained in:
commit
0e7d1572ef
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user