def test_occurrence_dates(session): year = datetime.today().year event = Event(state='initiated') event.timezone = 'Europe/Zurich' event.start = tzdatetime(year, 2, 7, 10, 15, 'Europe/Zurich') event.end = tzdatetime(year, 2, 7, 16, 00, 'Europe/Zurich') event.recurrence = 'RRULE:FREQ=YEARLY;INTERVAL=1;COUNT=5' assert len(event.occurrence_dates(limit=False)) == 5 dates = event.occurrence_dates() assert len(dates) == 2 assert dates[0] == tzdatetime(year, 2, 7, 10, 15, 'Europe/Zurich') assert dates[1] == tzdatetime(year + 1, 2, 7, 10, 15, 'Europe/Zurich') assert str(dates[0].tzinfo) == 'UTC' assert str(dates[1].tzinfo) == 'UTC' dates = event.occurrence_dates(localize=True) assert len(dates) == 2 assert dates[0] == tzdatetime(year, 2, 7, 10, 15, 'Europe/Zurich') assert dates[1] == tzdatetime(year + 1, 2, 7, 10, 15, 'Europe/Zurich') assert str(dates[0].tzinfo) == 'Europe/Zurich' assert str(dates[1].tzinfo) == 'Europe/Zurich' event.title = 'Event' session.add(event) transaction.commit() event = session.query(Event).one() assert len(event.occurrence_dates(limit=False)) == 5 dates = event.occurrence_dates() assert len(dates) == 2 assert dates[0] == tzdatetime(year, 2, 7, 10, 15, 'Europe/Zurich') assert dates[1] == tzdatetime(year + 1, 2, 7, 10, 15, 'Europe/Zurich') assert str(dates[0].tzinfo) == 'UTC' assert str(dates[1].tzinfo) == 'UTC' dates = event.occurrence_dates(localize=True) assert len(dates) == 2 assert dates[0] == tzdatetime(year, 2, 7, 10, 15, 'Europe/Zurich') assert dates[1] == tzdatetime(year + 1, 2, 7, 10, 15, 'Europe/Zurich') assert str(dates[0].tzinfo) == 'Europe/Zurich' assert str(dates[1].tzinfo) == 'Europe/Zurich'
def occurrences(form): event = Event() form.update_model(event) return [occurrence.date() for occurrence in event.occurrence_dates()]