Browse Source

[middleware] Add auto timezone setting

Colin Powell 1 month ago
parent
commit
b2f98d780b
2 changed files with 29 additions and 0 deletions
  1. 28 0
      vrobbler/apps/scrobbles/middleware.py
  2. 1 0
      vrobbler/settings.py

+ 28 - 0
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))

+ 1 - 0
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",