Skip to content

Commit c368ad8

Browse files
Merge pull request #92 from tresni/missing-status
Finalize support for STATUS/URL
2 parents a4919ad + 0edd8b9 commit c368ad8

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

icalevents/icalparser.py

+10
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ def __init__(self):
5050
self.attendee = None
5151
self.organizer = None
5252
self.categories = None
53+
self.status = None
54+
self.url = None
5355

5456
def time_left(self, time=None):
5557
"""
@@ -141,6 +143,8 @@ def copy_to(self, new_start=None, uid=None):
141143
ne.created = self.created
142144
ne.last_modified = self.last_modified
143145
ne.categories = self.categories
146+
ne.status = self.status
147+
ne.url = self.url
144148

145149
return ne
146150

@@ -227,6 +231,12 @@ def create_event(component, tz=UTC):
227231
encoded_categories.append(encode(category))
228232
event.categories = encoded_categories
229233

234+
if component.get("status"):
235+
event.status = encode(component.get("status"))
236+
237+
if component.get("url"):
238+
event.url = encode(component.get("url"))
239+
230240
return event
231241

232242

test/test_data/status_and_url.ics

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
BEGIN:VCALENDAR
2+
BEGIN:VTIMEZONE
3+
TZID:Europe/Berlin
4+
END:VTIMEZONE
5+
BEGIN:VEVENT
6+
DESCRIPTION:Event with Status and URL
7+
SUMMARY:Tentative Event w/ Recurrance to test copy
8+
STATUS:TENTATIVE
9+
DTSTART;VALUE=DATE:20181030
10+
DTEND;VALUE=DATE:20181031
11+
RRULE:FREQ=WEEKLY;BYDAY=TU
12+
END:VEVENT
13+
BEGIN:VEVENT
14+
DESCRIPTION:Event with Status and URL
15+
SUMMARY:Confirmed Event
16+
STATUS:CONFIRMED
17+
URL:https://example.com/
18+
DTSTART;VALUE=DATE:20181030
19+
DTEND;VALUE=DATE:20181031
20+
END:VEVENT
21+
BEGIN:VEVENT
22+
DESCRIPTION:Event with Status
23+
SUMMARY:Cancelled Event
24+
STATUS:CANCELLED
25+
DTSTART;VALUE=DATE:20181030
26+
DTEND;VALUE=DATE:20181031
27+
END:VEVENT
28+
BEGIN:VEVENT
29+
DESCRIPTION:Event with Status
30+
SUMMARY:XPARAM Event
31+
STATUS;X-SOMETHING=IGNOREME:CANCELLED
32+
DTSTART;VALUE=DATE:20181030
33+
DTEND;VALUE=DATE:20181031
34+
END:VEVENT
35+
BEGIN:VEVENT
36+
DESCRIPTION:Event without Status
37+
SUMMARY:Event
38+
DTSTART;VALUE=DATE:20181030
39+
DTEND;VALUE=DATE:20181031
40+
END:VEVENT
41+
END:VCALENDAR

test/test_icalevents.py

+14
Original file line numberDiff line numberDiff line change
@@ -436,3 +436,17 @@ def test_transparent(self):
436436

437437
self.assertEqual(e1.transparent, True, "respect transparency")
438438
self.assertEqual(e2.transparent, False, "respect opaqueness")
439+
440+
def test_status_and_url(self):
441+
ical = "test/test_data/status_and_url.ics"
442+
start = date(2018, 10, 30)
443+
end = date(2018, 10, 31)
444+
445+
[ev1, ev2, ev3, ev4, ev5] = icalevents.events(file=ical, start=start, end=end)
446+
self.assertEqual(ev1.status, "TENTATIVE")
447+
self.assertEqual(ev1.url, None)
448+
self.assertEqual(ev2.status, "CONFIRMED")
449+
self.assertEqual(ev2.url, "https://example.com/")
450+
self.assertEqual(ev3.status, "CANCELLED")
451+
self.assertEqual(ev4.status, "CANCELLED")
452+
self.assertEqual(ev5.status, None)

0 commit comments

Comments
 (0)