diff --git a/mayan/apps/common/handlers.py b/mayan/apps/common/handlers.py index 16e17156a7..54fb9cf8ff 100644 --- a/mayan/apps/common/handlers.py +++ b/mayan/apps/common/handlers.py @@ -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): diff --git a/mayan/apps/common/middleware/timezone.py b/mayan/apps/common/middleware/timezone.py index 9abb30698b..e3e7fcf1bc 100644 --- a/mayan/apps/common/middleware/timezone.py +++ b/mayan/apps/common/middleware/timezone.py @@ -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() diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index e188bfdbf4..6a7752a49a 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -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) diff --git a/mayan/settings/base.py b/mayan/settings/base.py index d422de9a3f..6851ef6388 100644 --- a/mayan/settings/base.py +++ b/mayan/settings/base.py @@ -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'