Add browser cookie support for timezone middleware.
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user