From 787a533dd65e97c8bad608ebfe2eb6d8210d20df Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Sat, 6 Jun 2026 23:21:49 +0200 Subject: [PATCH] Improve: sanitize item add timezone to EXDATE or RDATE if missing but DTSTART has --- radicale/item/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/radicale/item/__init__.py b/radicale/item/__init__.py index 14d563c7..103583d2 100644 --- a/radicale/item/__init__.py +++ b/radicale/item/__init__.py @@ -180,6 +180,13 @@ def check_and_sanitize_items( ref_value_param = component.dtstart.params.get("VALUE") for dates in chain(component.contents.get("exdate", []), component.contents.get("rdate", [])): + for i, date in enumerate(dates.value): + if type(ref_date) is datetime.datetime and type(date) is datetime.datetime: + if hasattr(ref_date, 'tzinfo'): + if hasattr(date, 'tzinfo') and date.tzinfo is None: + # Ensure that datetime.datetime object has timezone set if dtstart has one + dates.value[i] = dates.value[i].replace(tzinfo=ref_date.tzinfo) + logger.trace("ITEM/check_and_sanitize_item: overtake missing tzinfo from dtstart: '%s' -> '%s'", date, dates.value[i]) if all(type(d) is type(ref_date) for d in dates.value): continue for i, date in enumerate(dates.value):