diff --git a/src/dumbremind/__main__.py b/src/dumbremind/__main__.py index 7e2f874..0346575 100644 --- a/src/dumbremind/__main__.py +++ b/src/dumbremind/__main__.py @@ -10,7 +10,7 @@ import sys import os from dotenv import load_dotenv -from datetime import timedelta, date +from datetime import datetime, timedelta, date, time, timezone from os import environ from urllib.parse import quote_plus import caldav @@ -33,7 +33,11 @@ def fill_event(component, calendar) -> dict[str, str]: # month/day/year time? Never ever do that! # It's one of the most confusing date formats ever! # Use year-month-day time instead ... https://xkcd.com/1179/ - cur["start"] = component.start.strftime("%m/%d/%Y %H:%M") + cur["start"] = component.start.strftime("%d/%m/%Y %H:%M") + if isinstance(component.start, datetime): + cur["dstart"] = component.start + else: + cur["dstart"] = datetime.combine(component.start, time(0, 0)).replace(tzinfo=timezone.utc) endDate = component.end if endDate: cur["end"] = endDate.strftime("%m/%d/%Y %H:%M") @@ -68,15 +72,28 @@ def main(): print("No calendars defined for " + USERNAME) sys.exit(0) + event_list = [] + todo_list = [] for cal in calendars: - events = cal.search(event=True, start=start, end=end, expand=True) \ - + cal.search(todo=True) + events = cal.search(event=True, start=start, end=end, expand=True) + for event in events: for component in event.icalendar_instance.walk(): if component.name == "VEVENT": - display_event(fill_event(component, cal)) - elif component.name == "VTODO": - display_todo(fill_todo(component, cal)) + event_list.append(fill_event(component, cal)) + + todos = cal.search(todo=True) + for todo in todos: + for component in todo.icalendar_instance.walk(): + if component.name == "VTODO": + todo_list.append(fill_todo(component, cal)) + + event_list = sorted(event_list, key=lambda x: x['dstart']) + for event in event_list: + display_event(event) + + for todo in todo_list: + display_todo(todo) print(".")