(#1966) overridden recurrence validation
This commit is contained in:
@@ -632,6 +632,23 @@ def _split_overridden_vevents(
|
|||||||
vevent_recurrence = vevent
|
vevent_recurrence = vevent
|
||||||
|
|
||||||
if vevent_recurrence:
|
if vevent_recurrence:
|
||||||
|
# RFC 5545 3.8.4.4: RECURRENCE-ID MUST have the same value type as DTSTART
|
||||||
|
# in the recurring component.
|
||||||
|
base_dtstart = vevent_recurrence.dtstart.value
|
||||||
|
expected_type = datetime.date
|
||||||
|
if isinstance(base_dtstart, datetime.datetime):
|
||||||
|
expected_type = datetime.datetime
|
||||||
|
|
||||||
|
for ov in vevents_overridden:
|
||||||
|
rid = ov.recurrence_id.value
|
||||||
|
if not isinstance(rid, expected_type):
|
||||||
|
raise ValueError(
|
||||||
|
f"component with UID {vevent_recurrence.uid} has "
|
||||||
|
f"incompatible RECURRENCE-ID value type: base DTSTART is "
|
||||||
|
f"{type(base_dtstart).__name__}, but override RECURRENCE-ID is "
|
||||||
|
f"{type(rid).__name__} ({ov.recurrence_id.value!r})"
|
||||||
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
vevent_recurrence, sorted(
|
vevent_recurrence, sorted(
|
||||||
vevents_overridden,
|
vevents_overridden,
|
||||||
|
|||||||
Reference in New Issue
Block a user