kopia lustrzana https://github.com/jazzband/icalevents
feat: fix recurring_id timezone
rodzic
eb588f0d8f
commit
b7062ab7cb
|
@ -449,6 +449,21 @@ def parse_events(content, start=None, end=None, default_span=timedelta(days=7)):
|
|||
elif e.end >= start and e.start <= end:
|
||||
exdate = "%04d%02d%02d" % (e.start.year, e.start.month, e.start.day)
|
||||
if exdate not in exceptions:
|
||||
if (
|
||||
type(e.recurrence_id) == datetime
|
||||
and type(component.get("dtstart").dt) == datetime
|
||||
):
|
||||
naive = datetime(
|
||||
e.recurrence_id.year,
|
||||
e.recurrence_id.month,
|
||||
e.recurrence_id.day,
|
||||
e.recurrence_id.hour,
|
||||
e.recurrence_id.minute,
|
||||
e.recurrence_id.second,
|
||||
)
|
||||
e.recurrence_id = normalize(
|
||||
naive, tz=component.get("dtstart").dt.tzinfo
|
||||
)
|
||||
found.append(e)
|
||||
|
||||
result = found.copy()
|
||||
|
|
Plik diff jest za duży
Load Diff
|
@ -591,3 +591,19 @@ class ICalEventsTests(unittest.TestCase):
|
|||
self.assertEqual(
|
||||
e1.start.tzinfo, gettz("Europe/Zurich"), "check tz as specified in calendar"
|
||||
)
|
||||
|
||||
def test_recurring_override(self):
|
||||
ical = "test/test_data/recurring_override.ics"
|
||||
start = date(2021, 11, 23)
|
||||
end = date(2021, 11, 24)
|
||||
|
||||
[e0, e1, e2] = icalevents.events(file=ical, start=start, end=end)
|
||||
|
||||
# Here all dates are in utc because the .ics has two timezones and this causes a transformation
|
||||
self.assertEqual(e0.start, datetime(2021, 11, 23, 9, 0, tzinfo=UTC))
|
||||
self.assertEqual(e1.start, datetime(2021, 11, 23, 10, 45, tzinfo=UTC))
|
||||
self.assertEqual(
|
||||
e2.start,
|
||||
datetime(2021, 11, 23, 13, 0, tzinfo=UTC),
|
||||
"moved 1 hour from 12:00 to 13:00",
|
||||
)
|
||||
|
|
Ładowanie…
Reference in New Issue