diff --git a/icalevents/icalparser.py b/icalevents/icalparser.py index 71eb2b5..a35469e 100644 --- a/icalevents/icalparser.py +++ b/icalevents/icalparser.py @@ -50,6 +50,8 @@ def __init__(self): self.attendee = None self.organizer = None self.categories = None + self.status = None + self.url = None def time_left(self, time=None): """ @@ -141,6 +143,8 @@ def copy_to(self, new_start=None, uid=None): ne.created = self.created ne.last_modified = self.last_modified ne.categories = self.categories + ne.status = self.status + ne.url = self.url return ne @@ -227,6 +231,12 @@ def create_event(component, tz=UTC): encoded_categories.append(encode(category)) event.categories = encoded_categories + if component.get("status"): + event.status = encode(component.get("status")) + + if component.get("url"): + event.url = encode(component.get("url")) + return event diff --git a/test/test_data/status_and_url.ics b/test/test_data/status_and_url.ics new file mode 100644 index 0000000..be26ade --- /dev/null +++ b/test/test_data/status_and_url.ics @@ -0,0 +1,41 @@ +BEGIN:VCALENDAR +BEGIN:VTIMEZONE +TZID:Europe/Berlin +END:VTIMEZONE +BEGIN:VEVENT +DESCRIPTION:Event with Status and URL +SUMMARY:Tentative Event w/ Recurrance to test copy +STATUS:TENTATIVE +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +RRULE:FREQ=WEEKLY;BYDAY=TU +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Event with Status and URL +SUMMARY:Confirmed Event +STATUS:CONFIRMED +URL:https://example.com/ +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Event with Status +SUMMARY:Cancelled Event +STATUS:CANCELLED +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Event with Status +SUMMARY:XPARAM Event +STATUS;X-SOMETHING=IGNOREME:CANCELLED +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Event without Status +SUMMARY:Event +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +END:VEVENT +END:VCALENDAR diff --git a/test/test_icalevents.py b/test/test_icalevents.py index 61300be..d54f8b2 100644 --- a/test/test_icalevents.py +++ b/test/test_icalevents.py @@ -436,3 +436,17 @@ def test_transparent(self): self.assertEqual(e1.transparent, True, "respect transparency") self.assertEqual(e2.transparent, False, "respect opaqueness") + + def test_status_and_url(self): + ical = "test/test_data/status_and_url.ics" + start = date(2018, 10, 30) + end = date(2018, 10, 31) + + [ev1, ev2, ev3, ev4, ev5] = icalevents.events(file=ical, start=start, end=end) + self.assertEqual(ev1.status, "TENTATIVE") + self.assertEqual(ev1.url, None) + self.assertEqual(ev2.status, "CONFIRMED") + self.assertEqual(ev2.url, "https://example.com/") + self.assertEqual(ev3.status, "CANCELLED") + self.assertEqual(ev4.status, "CANCELLED") + self.assertEqual(ev5.status, None)