khal icon indicating copy to clipboard operation
khal copied to clipboard

Event not removed after importing ics file containing cancel method

Open RaphaelKriegmair opened this issue 6 months ago • 1 comments
trafficstars

Describe the bug Importing an ics file from a cancellation email does not remove the event from the calendar.

To Reproduce Import ics file from invitation email. Then import the ics file from the corresponding cancellation email.

Expected behavior The event should be removed from the calendar.

OS, version, khal version and how you installed it:

  • The output of khal --version: khal, version 0.10.5
  • Installation method: apt
  • python3 --version: Python 3.11.2
  • OS: Debian
  • khal config file: [calendars]

[[BESP_local]] path = ~/vdir-calendar-besp/FOLDER_NAME/ type = calendar

[[TEAM_local]] path = ~/vdir-calendar-team/ANOTHER_FOLDER_NAME/ type = calendar

[default] timedelta = 7 days

[locale] timeformat = %H:%M dateformat = %Y-%m-%d longdateformat = %Y-%m-%d datetimeformat = %Y-%m-%d %H:%M longdatetimeformat = %Y-%m-%d %H:%M

  • output of pip freeze: aiohttp==3.8.4 aiosignal==1.3.1 aiostream==0.4.3 async-timeout==4.0.2 atomicwrites==1.4.1 attrs==22.2.0 certifi==2022.9.24 chardet==5.1.0 charset-normalizer==3.0.1 click==8.1.3 click-log==0.3.2 colorama==0.4.6 configobj==5.0.8 distro==1.8.0 frozenlist==1.3.3 httplib2==0.20.4 icalendar==4.0.3 idna==3.3 imaplib2==3.5 khal==0.10.5 multidict==6.0.4 pycurl==7.45.2 pyparsing==3.0.9 PySimpleSOAP==1.16.2 python-apt==2.6.0 python-dateutil==2.8.2 python-debian==0.1.49 python-debianbts==4.0.1 pytz==2022.7.1 pytz-deprecation-shim==0.1.0.post0 pyxdg==0.28 reportbug==12.0.0 requests==2.28.1 requests-toolbelt==0.10.1 setproctitle==1.3.1 six==1.16.0 tzlocal==4.2 urllib3==1.26.12 urwid==2.1.2 vdirsyncer==0.19.0 xdg==5 yarl==1.8.2

Additional context

  • ics file content: (some personal information has been replaced by the following: ---INFO REMOVED---)

BEGIN:VCALENDAR PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN VERSION:2.0 METHOD:CANCEL BEGIN:VTIMEZONE TZID:Europe/Berlin X-TZINFO:Europe/Berlin[2024a] BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+005328 TZNAME:Europe/Berlin(STD) DTSTART:18930401T000000 RDATE:18930401T000000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19161001T010000 RDATE:19161001T010000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19170917T030000 RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3MO;UNTIL=19180916T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19421102T030000 RDATE:19421102T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19431004T030000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1MO;UNTIL=19441002T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19451118T030000 RDATE:19451118T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19461007T030000 RDATE:19461007T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19471005T030000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19491002T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19800928T030000 RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU;UNTIL=19950924T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(STD) DTSTART:19961027T030000 RDATE:19961027T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:(STD) DTSTART:19971026T030000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19160430T230000 RDATE:19160430T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19170416T020000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3MO;UNTIL=19180415T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19400401T020000 RDATE:19400401T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19430329T020000 RDATE:19430329T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19440403T020000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1MO;UNTIL=19450402T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+030000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(DST) DTSTART:19450524T020000 RDATE:19450524T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+030000 TZNAME:Europe/Berlin(DST) DTSTART:19450924T030000 RDATE:19450924T030000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19460414T020000 RDATE:19460414T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19470406T030000 RDATE:19470406T030000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+030000 TZOFFSETFROM:+020000 TZNAME:Europe/Berlin(DST) DTSTART:19470511T030000 RDATE:19470511T030000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+030000 TZNAME:Europe/Berlin(DST) DTSTART:19470629T030000 RDATE:19470629T030000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19480418T020000 RDATE:19480418T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19490410T020000 RDATE:19490410T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19800406T020000 RDATE:19800406T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Berlin(DST) DTSTART:19810329T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:(DST) DTSTART:19970330T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT CREATED:20250505T104925Z LAST-MODIFIED:20250505T104943Z DTSTAMP:20250505T104943Z UID:733e86de-ce07-41c9-990b-9c91b41a35fd SUMMARY:---INFO REMOVED--- ORGANIZER;PARTSTAT=NEEDS-ACTION;CUTYPE=INDIVIDUAL:mailto:---INFO REMOVED--- ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT:mailto:---INFO REMOVED--- ATTENDEE;PARTSTAT=NEEDS-ACTION;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT:mailt o:---INFO REMOVED--- DTSTART;TZID=Europe/Berlin:20250509T091500 DTEND;TZID=Europe/Berlin:20250509T101500 TRANSP:OPAQUE END:VEVENT END:VCALENDAR

RaphaelKriegmair avatar May 05 '25 11:05 RaphaelKriegmair

This sounds like a bug/oversight.

Right now we treat all imported ICS files as events, kind of assuming that they're invites or regular events, but not cancellations.

We need to parse the value of METHOD and act accordingly. The UI should change from asking where you want to import an event to asking for confirmation if you want to delete it.

WhyNotHugo avatar May 05 '25 11:05 WhyNotHugo