Improved multi-day event handling.

This commit is contained in:
Reto Bollinger 2025-01-09 16:23:01 +01:00
parent d44272d9b4
commit 2c9636563d
2 changed files with 54 additions and 22 deletions

View file

@ -2,7 +2,7 @@
import sys
from pathlib import Path
from datetime import datetime, date, timedelta
from datetime import datetime, date, timedelta, timezone
from typing import Optional, NamedTuple
from dataclasses import dataclass
from copy import deepcopy
@ -134,7 +134,23 @@ page.html
def get_next_event(self, calendar: Calendar) -> Optional[EventDetails]:
try:
events = split_multiday_events(recurring_ical_events.of(calendar).after(datetime.now()))
now=datetime.now(timezone.utc) # + timedelta(days=1)
raw_events = split_multiday_events(recurring_ical_events.of(calendar).after(now))
now_date = now.date()
now_datetime = now
events = []
for raw_event in raw_events:
start = raw_event.get('dtstart').dt
if isinstance(start, datetime):
my_now = now_datetime
else:
my_now = now_date
if start >= my_now:
events.append(raw_event)
event = events[0]
start = event.get('dtstart').dt

View file

@ -1,4 +1,4 @@
from datetime import datetime, date, timedelta
from datetime import datetime, date, timedelta, timezone
import recurring_ical_events
import requests
from copy import deepcopy
@ -63,9 +63,25 @@ def fetch_upcoming_events(ics_url):
response = requests.get(ics_url)
calendar = Calendar.from_ical(response.content)
events = split_multiday_events(recurring_ical_events.of(calendar).after(datetime.now()))
now=datetime.now(timezone.utc) # + timedelta(days=1)
raw_events = split_multiday_events(recurring_ical_events.of(calendar).after(now))
now_date = now.date()
now_datetime = now
events = []
for raw_event in raw_events:
start = raw_event.get('dtstart').dt
if isinstance(start, datetime):
my_now = now_datetime
else:
my_now = now_date
if start >= my_now:
events.append(raw_event)
for event in events:
start = event.get('dtstart').dt
out_summary = event.get('summary')
location = event.get('location', 'No location specified')