Add browser cookie support for timezone middleware.

This commit is contained in:
Roberto Rosario
2015-07-08 00:17:44 -04:00
parent 3861bc351a
commit 857cf7b1b2
4 changed files with 14 additions and 8 deletions

View File

@@ -17,9 +17,10 @@ def user_locale_profile_session_config(sender, request, user, **kwargs):
if hasattr(request, 'session'):
request.session[translation.LANGUAGE_SESSION_KEY] = user_locale_profile.language
request.session['django_timezone'] = user_locale_profile.timezone
request.session[settings.TIMEZONE_SESSION_KEY] = user_locale_profile.timezone
else:
request.set_cookie(settings.LANGUAGE_COOKIE_NAME, user_locale_profile.language)
request.set_cookie(settings.TIMEZONE_COOKIE_NAME, user_locale_profile.timezone)
def user_locale_profile_create(sender, instance, created, **kwargs):

View File

@@ -2,17 +2,18 @@ from __future__ import unicode_literals
import pytz
from django.conf import settings
from django.utils import timezone
class TimezoneMiddleware(object):
def process_request(self, request):
if hasattr(request, 'session'):
tzname = request.session.get('django_timezone')
if tzname:
timezone.activate(pytz.timezone(tzname))
else:
timezone.deactivate()
tzname = request.session.get(settings.TIMEZONE_SESSION_KEY)
else:
tzname = HttpRequest.COOKIES.get(settings.TIMEZONE_COOKIE_NAME)
if tzname:
timezone.activate(pytz.timezone(tzname))
else:
# TODO: Cookie, browser based timezone
timezone.deactivate()

View File

@@ -554,9 +554,10 @@ def current_user_locale_profile_edit(request):
if hasattr(request, 'session'):
request.session[translation.LANGUAGE_SESSION_KEY] = form.cleaned_data['language']
request.session['django_timezone'] = form.cleaned_data['timezone']
request.session[settings.TIMEZONE_SESSION_KEY] = form.cleaned_data['timezone']
else:
request.set_cookie(settings.LANGUAGE_COOKIE_NAME, form.cleaned_data['language'])
request.set_cookie(settings.TIMEZONE_COOKIE_NAME, form.cleaned_data['timezone'])
messages.success(request, _('Current user\'s locale profile details updated.'))
return HttpResponseRedirect(next)

View File

@@ -271,3 +271,6 @@ CORS_ORIGIN_ALLOW_ALL = True
SWAGGER_SETTINGS = {
'api_version': '0', # Specify your API's version
}
# ------ Timezone --------
TIMEZONE_COOKIE_NAME = 'django_timezone'
TIMEZONE_SESSION_KEY = 'django_timezone'