1
0
Fork 0
mirror of https://github.com/Kozea/Radicale.git synced 2025-08-01 18:18:31 +00:00

fix #715 (Main Component is missing when only recurrence id exists) with balrok's patch

This commit is contained in:
trougnouf (Benoit Brummer) 2022-07-19 00:15:33 +02:00
parent 6a56a6026f
commit f4a87afab7

View file

@ -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[ def get_children(components: Iterable[vobject.base.Component]) -> Iterator[
Tuple[vobject.base.Component, bool, List[date]]]: Tuple[vobject.base.Component, bool, List[date]]]:
main = None main = None
rec_main = None
recurrences = [] recurrences = []
for comp in components: for comp in components:
if hasattr(comp, "recurrence_id") and comp.recurrence_id.value: 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: if comp.rruleset:
# Prevent possible infinite loop # Prevent possible infinite loop
raise ValueError("Overwritten recurrence with RRULESET") raise ValueError("Overwritten recurrence with RRULESET")
rec_main = comp
yield comp, True, [] yield comp, True, []
else: else:
if main is not None: if main is not None:
raise ValueError("Multiple main components") raise ValueError("Multiple main components")
main = comp main = comp
if main is None and len(recurrences) == 1:
main = rec_main
if main is None: if main is None:
raise ValueError("Main component missing") raise ValueError("Main component missing")
yield main, False, recurrences yield main, False, recurrences