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