Ver código fonte

Honor start and end times expand

Pieter Hijma 1 ano atrás
pai
commit
74f4412761
2 arquivos alterados com 16 adições e 3 exclusões
  1. 13 0
      radicale/app/report.py
  2. 3 3
      radicale/tests/test_base.py

+ 13 - 0
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

+ 3 - 3
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