Don't limit expansion range using EXDATE
Any EXDATE values specify single instances that must be removed from the expanded set of DTSTART values Signed-off-by: David Greaves <david@dgreaves.com>
This commit is contained in:
@@ -360,15 +360,13 @@ def _expand(
|
|||||||
elif hasattr(vevent_recurrence, "duration"):
|
elif hasattr(vevent_recurrence, "duration"):
|
||||||
duration = vevent_recurrence.duration.value
|
duration = vevent_recurrence.duration.value
|
||||||
|
|
||||||
# Handle EXDATE to limit expansion range
|
# Generate EXDATE to remove from expansion range
|
||||||
if hasattr(vevent_recurrence, 'exdate'):
|
if hasattr(vevent_recurrence, 'exdate'):
|
||||||
exdates = vevent_recurrence.exdate.value
|
exdates = vevent_recurrence.exdate.value
|
||||||
if not isinstance(exdates, list):
|
if not isinstance(exdates, list):
|
||||||
exdates = [exdates]
|
exdates = [exdates]
|
||||||
logger.debug("EXDATE values: %s", exdates)
|
logger.debug("EXDATE values: %s", exdates)
|
||||||
latest_exdate = max(exdates) if exdates else None
|
# TODO: these exdate values are not removed from the expanded set
|
||||||
if latest_exdate and end > latest_exdate:
|
|
||||||
end = min(end, latest_exdate)
|
|
||||||
|
|
||||||
rruleset = None
|
rruleset = None
|
||||||
if hasattr(vevent_recurrence, 'rrule'):
|
if hasattr(vevent_recurrence, 'rrule'):
|
||||||
@@ -409,6 +407,8 @@ def _expand(
|
|||||||
logger.debug("Recurrence %s filtered out by time-range", recurrence_utc)
|
logger.debug("Recurrence %s filtered out by time-range", recurrence_utc)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Check here for exdate
|
||||||
|
|
||||||
# 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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user