diff --git a/vrobbler/apps/scrobbles/middleware.py b/vrobbler/apps/scrobbles/middleware.py new file mode 100644 index 0000000..5eb28f9 --- /dev/null +++ b/vrobbler/apps/scrobbles/middleware.py @@ -0,0 +1,28 @@ +import logging + +from django.conf import settings +from django.utils import timezone + +logger = logging.getLogger(__name__) + + +class TimezoneMiddleware(object): + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + return self.get_response(request) + + def __getUserTimeZone(self, request): + # info = IPResolver(request).getGeoInfo() + # return pytz.country_timezones[info["country_code"]][0] + if not request.user.is_anonymous: + return request.user.profile.timezone + + def process_request(self, request): + try: + tz = self.__getUserTimeZone(request) or settings.TIME_ZONE + timezone.activate(tz) + logger.info('Time zone "%s" activated' % str(tz)) + except Exception as e: + logger.error("Unable to set timezone: %s" % str(e)) diff --git a/vrobbler/settings.py b/vrobbler/settings.py index 94de984..0f3444e 100644 --- a/vrobbler/settings.py +++ b/vrobbler/settings.py @@ -163,6 +163,7 @@ SITE_ID = 1 MIDDLEWARE = [ "vrobbler.health_check.HealthCheckMiddleware", + "vrobbler.apps.scrobbles.middleware.TimezoneMiddleware", "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware",