From 2b3d9549dcf11f226365b4dc2deebd88e07c357f Mon Sep 17 00:00:00 2001 From: "Jokob @NetAlertX" <96159884+jokob-sk@users.noreply.github.com> Date: Sun, 5 Apr 2026 22:48:44 +0000 Subject: [PATCH 1/2] Fix timezone handling in format_date_iso: ensure fallback to UTC for invalid configurations --- server/utils/datetime_utils.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/server/utils/datetime_utils.py b/server/utils/datetime_utils.py index 03cb1bed..252d4bd6 100644 --- a/server/utils/datetime_utils.py +++ b/server/utils/datetime_utils.py @@ -209,10 +209,13 @@ def format_date_iso(date_val: str) -> Optional[str]: # 2. If it has no timezone, assume it's UTC (our DB storage format) # then CONVERT to user's configured timezone if dt.tzinfo is None: - # Mark as UTC first + # Mark as UTC first — critical: localize() would label without converting dt = dt.replace(tzinfo=datetime.UTC) - # Convert to user's timezone - target_tz = conf.tz if isinstance(conf.tz, datetime.tzinfo) else ZoneInfo(conf.tz) + # Resolve target timezone; fall back to UTC if conf.tz is missing/invalid + try: + target_tz = conf.tz if isinstance(conf.tz, datetime.tzinfo) else ZoneInfo(conf.tz) + except Exception: + target_tz = datetime.UTC dt = dt.astimezone(target_tz) # 3. Return the string. .isoformat() will now include the +11:00 or +10:00 From bda8ca3bd81d2decabc7ec28560d11011d86de6c Mon Sep 17 00:00:00 2001 From: "Jokob @NetAlertX" <96159884+jokob-sk@users.noreply.github.com> Date: Sun, 5 Apr 2026 22:55:02 +0000 Subject: [PATCH 2/2] Fix timezone resolution in format_date_iso: handle specific exceptions for invalid configurations --- server/utils/datetime_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/utils/datetime_utils.py b/server/utils/datetime_utils.py index 252d4bd6..df125b39 100644 --- a/server/utils/datetime_utils.py +++ b/server/utils/datetime_utils.py @@ -6,7 +6,7 @@ import datetime import re import pytz from typing import Union, Optional -from zoneinfo import ZoneInfo +from zoneinfo import ZoneInfo, ZoneInfoNotFoundError import email.utils import conf # from const import * @@ -214,7 +214,7 @@ def format_date_iso(date_val: str) -> Optional[str]: # Resolve target timezone; fall back to UTC if conf.tz is missing/invalid try: target_tz = conf.tz if isinstance(conf.tz, datetime.tzinfo) else ZoneInfo(conf.tz) - except Exception: + except (ZoneInfoNotFoundError, ValueError, TypeError): target_tz = datetime.UTC dt = dt.astimezone(target_tz)