From 74f4412761ddb623fb6e9ce84adfc8d2401d60ab Mon Sep 17 00:00:00 2001 From: Pieter Hijma Date: Sat, 2 Nov 2024 21:09:01 +0100 Subject: [PATCH] Honor start and end times expand --- radicale/app/report.py | 13 +++++++++++++ radicale/tests/test_base.py | 6 +++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/radicale/app/report.py b/radicale/app/report.py index d5092db1..11c5bea4 100644 --- a/radicale/app/report.py +++ b/radicale/app/report.py @@ -303,6 +303,10 @@ def _expand( # then in the response we return the date, not datetime dt_format = '%Y%m%d' + duration = None + if hasattr(item.vobject_item.vevent, "dtend"): + duration = item.vobject_item.vevent.dtend.value - item.vobject_item.vevent.dtstart.value + expanded_item, rruleset = _make_vobject_expanded_item(item, dt_format) if rruleset: @@ -319,6 +323,15 @@ def _expand( name='RECURRENCE-ID', value=recurrence_utc.strftime(dt_format), params={} ) + vevent.dtstart = ContentLine( + name='DTSTART', + value=recurrence_utc.strftime(dt_format), params={} + ) + if duration: + vevent.dtend = ContentLine( + name='DTEND', + value=(recurrence_utc + duration).strftime(dt_format), params={} + ) if is_expanded_filled is False: expanded.vevent = vevent diff --git a/radicale/tests/test_base.py b/radicale/tests/test_base.py index c47df720..fd6e8c30 100644 --- a/radicale/tests/test_base.py +++ b/radicale/tests/test_base.py @@ -1715,7 +1715,7 @@ permissions: RrWw""") recurrence_ids.append(line) if line.startswith("DTSTART:"): - assert line == "DTSTART:20060102T170000Z" + assert line in ["DTSTART:20060103T170000Z", "DTSTART:20060104T170000Z"] assert len(uids) == 2 assert len(set(recurrence_ids)) == 2 @@ -1802,10 +1802,10 @@ permissions: RrWw""") recurrence_ids.append(line) if line.startswith("DTSTART:"): - assert line == "DTSTART:20060102" + assert line in ["DTSTART:20060103", "DTSTART:20060104", "DTSTART:20060105"] if line.startswith("DTEND:"): - assert line == "DTEND:20060103" + assert line in ["DTEND:20060104", "DTEND:20060105", "DTEND:20060106"] assert len(uids) == 3 assert len(set(recurrence_ids)) == 3