Calendar: Correct RRULE's UNTIL value saving
I am been trying to share my calendar/tasks between Evolution and CLI tools (like todoman) with NextCloud as the CalDAV provider. Unfortunately, events created by Evolution are malformed, resulting in the libraries todoman rely on frequently error on calendar entries with:
ValueError: RRULE UNTIL values must be specified in UTC when DTSTART is timezone-aware
This is verified in RFC5545: https://tools.ietf.org/html/rfc5545#section-3.3.10
...yet a few lines of code in Evolution appear to store a specific time-zone in three of four scenarios:
- https://gitlab.gnome.org/GNOME/evolution/-/blob/master/src/calendar/gui/itip-utils.c#L1679
- https://gitlab.gnome.org/GNOME/evolution/-/blob/master/src/calendar/gui/itip-utils.c#L1684
- https://gitlab.gnome.org/GNOME/evolution/-/blob/master/src/calendar/gui/itip-utils.c#L1686
If an UNTIL is required, Evolution should not be clever in figuring out which TZ to use. However (and this part is harder to track down why) it appears that recurrence is needlessly being added - thus adding an unnecessary UNTIL for that and also be using a non-UTC time zone.
The example file appears to define a century of date offsets in RRULEs, all for a one-time event. ics_sample.txt
The behaviour is quite bizarre although some of this could very well be munged on the NextCloud side (even though I do have entries created by DAVx5
products in the same NextCloud that do not display this concern).