Skip to content

Commit a4919ad

Browse files
Merge pull request #88 from tresni/master
Fix reversion of RRULE UNTIL behavior
2 parents 9fcda2f + 16573fc commit a4919ad

File tree

3 files changed

+61
-6
lines changed

3 files changed

+61
-6
lines changed

icalevents/icalparser.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -457,12 +457,9 @@ def parse_rrule(component, tz=UTC):
457457
rdtstart = normalize(rdtstart, tz=tz)
458458

459459
# Remove/add timezone to rrule until dates depending on component
460-
if type(rdtstart) is date:
461-
for index, rru in enumerate(rrules):
462-
if "UNTIL" in rru:
463-
rrules[index]["UNTIL"] = adjust_timezone(
464-
component, rru["UNTIL"], tz
465-
)
460+
for index, rru in enumerate(rrules):
461+
if "UNTIL" in rru:
462+
rrules[index]["UNTIL"] = adjust_timezone(component, rru["UNTIL"], tz)
466463

467464
# Parse the rrules, might return a rruleset instance, instead of rrule
468465
rule = rrulestr(
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
BEGIN:VCALENDAR
2+
PRODID:-//Google Inc//Google Calendar 70.9054//EN
3+
VERSION:2.0
4+
CALSCALE:GREGORIAN
5+
METHOD:PUBLISH
6+
X-WR-CALNAME:NotYourCalendar
7+
X-WR-TIMEZONE:America/Boise
8+
BEGIN:VTIMEZONE
9+
TZID:America/Boise
10+
X-LIC-LOCATION:America/Boise
11+
BEGIN:DAYLIGHT
12+
TZOFFSETFROM:-0700
13+
TZOFFSETTO:-0600
14+
TZNAME:MDT
15+
DTSTART:19700308T020000
16+
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
17+
END:DAYLIGHT
18+
BEGIN:STANDARD
19+
TZOFFSETFROM:-0600
20+
TZOFFSETTO:-0700
21+
TZNAME:MST
22+
DTSTART:19701101T020000
23+
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
24+
END:STANDARD
25+
END:VTIMEZONE
26+
BEGIN:VEVENT
27+
DTSTART;TZID=America/Boise:20210929T130000
28+
DTEND;TZID=America/Boise:20210929T135000
29+
RRULE:FREQ=WEEKLY;WKST=SU;UNTIL=20211020;BYDAY=MO,TH,WE
30+
EXDATE;TZID=America/Boise:20211013T130000
31+
DTSTAMP:20211029T011330Z
32+
33+
CREATED:20210811T153934Z
34+
DESCRIPTION:
35+
LAST-MODIFIED:20210927T184338Z
36+
LOCATION:
37+
SEQUENCE:3
38+
STATUS:CONFIRMED
39+
SUMMARY:LUNCH
40+
TRANSP:OPAQUE
41+
X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC
42+
END:VEVENT
43+
END:VCALENDAR

test/test_icalevents.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,21 @@ def test_events_rrule_until_all_day_google(self):
156156
self.assertEqual(ev_2.all_day, True, "All day event")
157157
self.assertEqual(ev_2.summary, "Busy")
158158

159+
def test_events_rrule_until_only_date(self):
160+
ical = "test/test_data/rrule_until_only_date.ics"
161+
start = date(2021, 9, 29)
162+
end = date(2021, 10, 19)
163+
evs = icalevents.events(file=ical, start=start, end=end)
164+
self.assertEqual(len(evs), 8)
165+
self.assertEqual(
166+
evs[0].start,
167+
datetime(2021, 9, 29, 13, 0, 0, 0, tzinfo=gettz("America/Boise")),
168+
)
169+
self.assertEqual(
170+
evs[-1].start,
171+
datetime(2021, 10, 18, 13, 0, 0, 0, tzinfo=gettz("America/Boise")),
172+
)
173+
159174
def test_events_rrule_until(self):
160175
ical = "test/test_data/rrule_until.ics"
161176
start = date(2019, 4, 2)

0 commit comments

Comments
 (0)