diff --git a/radicale-3.1.8-fix-main-component-PR-1252.patch b/radicale-3.1.8-fix-main-component-PR-1252.patch new file mode 100644 index 0000000..5016406 --- /dev/null +++ b/radicale-3.1.8-fix-main-component-PR-1252.patch @@ -0,0 +1,27 @@ +diff --git a/radicale/item/filter.py b/radicale/item/filter.py +index 6a89ffa..217f503 100644 +--- a/radicale/item/filter.py ++++ b/radicale/item/filter.py +@@ -225,6 +225,7 @@ def visit_time_ranges(vobject_item: vobject.base.Component, child_name: str, + def get_children(components: Iterable[vobject.base.Component]) -> Iterator[ + Tuple[vobject.base.Component, bool, List[date]]]: + main = None ++ rec_main = None + recurrences = [] + for comp in components: + if hasattr(comp, "recurrence_id") and comp.recurrence_id.value: +@@ -232,11 +233,14 @@ def visit_time_ranges(vobject_item: vobject.base.Component, child_name: str, + if comp.rruleset: + # Prevent possible infinite loop + raise ValueError("Overwritten recurrence with RRULESET") ++ rec_main = comp + yield comp, True, [] + else: + if main is not None: + raise ValueError("Multiple main components") + main = comp ++ if main is None and len(recurrences) == 1: ++ main = rec_main + if main is None: + raise ValueError("Main component missing") + yield main, False, recurrences