Просмотр исходного кода

(#1979) Fix invalid RECURRENCE-ID comparsion for all-day events

Georgiy 1 неделя назад
Родитель
Сommit
859ca7f41d
1 измененных файлов с 12 добавлено и 6 удалено
  1. 12 6
      radicale/app/report.py

+ 12 - 6
radicale/app/report.py

@@ -471,7 +471,13 @@ def _expand(
                 continue
                 continue
 
 
             # Check for overridden instances
             # Check for overridden instances
-            i_overridden, vevent = _find_overridden(i_overridden, vevents_overridden, recurrence_utc, dt_format)
+            i_overridden, vevent = _find_overridden(
+                i_overridden,
+                vevents_overridden,
+                recurrence_utc,
+                dt_format,
+                all_day_event,
+            )
 
 
             if not vevent:
             if not vevent:
                 # Create new instance from recurrence
                 # Create new instance from recurrence
@@ -649,13 +655,13 @@ def _find_overridden(
         start: int,
         start: int,
         vevents: List[vobject.icalendar.RecurringComponent],
         vevents: List[vobject.icalendar.RecurringComponent],
         dt: datetime.datetime,
         dt: datetime.datetime,
-        dt_format: str
+        dt_format: str,
+        all_day_event: bool,
 ) -> Tuple[int, Optional[vobject.icalendar.RecurringComponent]]:
 ) -> Tuple[int, Optional[vobject.icalendar.RecurringComponent]]:
     for i in range(start, len(vevents)):
     for i in range(start, len(vevents)):
-        dt_event = datetime.datetime.strptime(
-            vevents[i].recurrence_id.value,
-            dt_format
-        ).replace(tzinfo=datetime.timezone.utc)
+        dt_event = datetime.datetime.strptime(vevents[i].recurrence_id.value, dt_format)
+        if not all_day_event:
+            dt_event = dt_event.replace(tzinfo=datetime.timezone.utc)
         if dt_event == dt:
         if dt_event == dt:
             return (i + 1, vevents[i])
             return (i + 1, vevents[i])
     return (start, None)
     return (start, None)