Skip to content

Commit e77f41f

Browse files
feat: respect transparency
1 parent c3c3b02 commit e77f41f

File tree

3 files changed

+79
-1
lines changed

3 files changed

+79
-1
lines changed

icalevents/icalparser.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def __init__(self):
4040
self.start = None
4141
self.end = None
4242
self.all_day = True
43+
self.transparent = False
4344
self.recurring = False
4445
self.location = None
4546
self.private = False
@@ -133,6 +134,7 @@ def copy_to(self, new_start=None, uid=None):
133134
ne.attendee = self.attendee
134135
ne.organizer = self.organizer
135136
ne.private = self.private
137+
ne.transparent = self.transparent
136138
ne.uid = uid
137139
ne.created = self.created
138140
ne.last_modified = self.last_modified
@@ -201,6 +203,9 @@ def create_event(component, tz=UTC):
201203
event_class = component.get('class')
202204
event.private = event_class == 'PRIVATE' or event_class == 'CONFIDENTIAL'
203205

206+
if component.get('class'):
207+
event.transparent = component.get('transp') == 'TRANSPARENT'
208+
204209
if component.get('created'):
205210
event.created = normalize(component.get('created').dt, tz)
206211

test/test_data/transparent.ics

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
BEGIN:VCALENDAR
2+
METHOD:PUBLISH
3+
PRODID:Microsoft Exchange Server 2010
4+
VERSION:2.0
5+
X-WR-CALNAME:Kalender
6+
BEGIN:VTIMEZONE
7+
TZID:Central European Standard Time
8+
BEGIN:STANDARD
9+
DTSTART:16010101T030000
10+
TZOFFSETFROM:+0200
11+
TZOFFSETTO:+0100
12+
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
13+
END:STANDARD
14+
BEGIN:DAYLIGHT
15+
DTSTART:16010101T020000
16+
TZOFFSETFROM:+0100
17+
TZOFFSETTO:+0200
18+
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
19+
END:DAYLIGHT
20+
END:VTIMEZONE
21+
BEGIN:VEVENT
22+
UID:040000008200E00074C5B7101A82E008000000007BFBACB1614AD701000000000000000
23+
0100000004A699A72684F7646A814017A9F145FE8
24+
SUMMARY:Free
25+
DTSTART;VALUE=DATE:20210520
26+
DTEND;VALUE=DATE:20210521
27+
CLASS:PUBLIC
28+
PRIORITY:5
29+
DTSTAMP:20210516T144840Z
30+
TRANSP:TRANSPARENT
31+
STATUS:CONFIRMED
32+
SEQUENCE:0
33+
X-MICROSOFT-CDO-APPT-SEQUENCE:0
34+
X-MICROSOFT-CDO-BUSYSTATUS:FREE
35+
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
36+
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
37+
X-MICROSOFT-CDO-IMPORTANCE:1
38+
X-MICROSOFT-CDO-INSTTYPE:1
39+
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
40+
X-MICROSOFT-DISALLOW-COUNTER:FALSE
41+
END:VEVENT
42+
BEGIN:VEVENT
43+
UID:040000008200E00074C5B7101A82E00800000000F7B85AB6614AD701000000000000000
44+
01000000005576067F6247C45A572F9B9E56ABB32
45+
SUMMARY:Busy
46+
DTSTART;TZID=Central European Standard Time:20210521T070000
47+
DTEND;TZID=Central European Standard Time:20210521T223000
48+
CLASS:PUBLIC
49+
PRIORITY:5
50+
DTSTAMP:20210516T144840Z
51+
TRANSP:OPAQUE
52+
STATUS:CONFIRMED
53+
SEQUENCE:0
54+
X-MICROSOFT-CDO-APPT-SEQUENCE:0
55+
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
56+
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
57+
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
58+
X-MICROSOFT-CDO-IMPORTANCE:1
59+
X-MICROSOFT-CDO-INSTTYPE:0
60+
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
61+
X-MICROSOFT-DISALLOW-COUNTER:FALSE
62+
END:VEVENT
63+
END:VCALENDAR

test/test_icalevents.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,4 +334,14 @@ def test_cest(self):
334334

335335
evs = icalevents.events(file=ical, start=start, end=end)
336336

337-
self.assertEqual(len(evs), 115, "4 events in total")
337+
self.assertEqual(len(evs), 115, "4 events in total")
338+
339+
def test_transparent(self):
340+
ical = "test/test_data/transparent.ics"
341+
start = date(2021, 1, 1)
342+
end = date(2021, 12, 31)
343+
344+
[e1, e2] = icalevents.events(file=ical, start=start, end=end)
345+
346+
self.assertEqual(e1.transparent, True, "respect transparency")
347+
self.assertEqual(e2.transparent, False, "respect opaqueness")

0 commit comments

Comments
 (0)