From 5bace921792f6d8bf86cf6312ea943c5cbea48bd Mon Sep 17 00:00:00 2001
From: Dominik George <nik@naturalnet.de>
Date: Tue, 20 Oct 2020 14:14:54 +0200
Subject: [PATCH] Move handling of default timezone to instance and db code

---
 reminder/bot.py  | 5 +++++
 reminder/db.py   | 4 ++--
 reminder/util.py | 7 ++-----
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/reminder/bot.py b/reminder/bot.py
index 18d2c70..6025cbe 100644
--- a/reminder/bot.py
+++ b/reminder/bot.py
@@ -51,6 +51,11 @@ class ReminderBot(Plugin):
         bc = self.config["base_command"]
         self.base_command = bc[0] if isinstance(bc, list) else bc
         self.base_aliases = tuple(bc) if isinstance(bc, list) else (bc,)
+        try:
+            self.default_timezone = pytz.timezone(self.config["timezone"])
+        except pytz.UnknownTimeZoneError:
+            self.log.warning(f"Unknown default timezone {self.config['timezone']}")
+            self.default_timezone = pytz.UTC
 
     async def stop(self) -> None:
         self.reminder_loop_task.cancel()
diff --git a/reminder/db.py b/reminder/db.py
index 8909bde..65be035 100644
--- a/reminder/db.py
+++ b/reminder/db.py
@@ -70,7 +70,7 @@ class ReminderDatabase:
             tx.execute(self.timezone.insert().values(user_id=user_id, timezone=tz.zone))
         self.tz_cache[user_id] = tz
 
-    def get_timezone(self, user_id: UserID) -> Optional[pytz.timezone]:
+    def get_timezone(self, user_id: UserID, default_tz: Optional[pytz.timezone]) -> Optional[pytz.timezone]:
         try:
             return self.tz_cache[user_id]
         except KeyError:
@@ -79,7 +79,7 @@ class ReminderDatabase:
             try:
                 self.tz_cache[user_id] = pytz.timezone(next(rows)[0])
             except (pytz.UnknownTimeZoneError, StopIteration, IndexError):
-                self.tz_cache[user_id] = pytz.UTC
+                self.tz_cache[user_id] = default_tz or pytz.UTC
             return self.tz_cache[user_id]
 
     def set_locales(self, user_id: UserID, locales: List[str]) -> None:
diff --git a/reminder/util.py b/reminder/util.py
index 99c291a..4fba198 100644
--- a/reminder/util.py
+++ b/reminder/util.py
@@ -44,13 +44,10 @@ class DateArgument(Argument):
 
     def match(self, val: str, evt: MessageEvent = None, instance: 'ReminderBot' = None
               ) -> Tuple[str, Optional[datetime]]:
-        try:
-            tz = pytz.timezone(instance.config["timezone"])
-        except (pytz.UnknownTimeZoneError, StopIteration, IndexError):
-            tz = pytz.UTC
+        tz = pytz.UTC
         use_locales = [locales["en_iso"]]
         if instance:
-            tz = instance.db.get_timezone(evt.sender)
+            tz = instance.db.get_timezone(evt.sender, instance.default_timezone)
             locale_ids = instance.db.get_locales(evt.sender)
             use_locales = [locales[id] for id in locale_ids if id in locales]
 
-- 
GitLab