diff --git a/src/dumbremind/__main__.py b/src/dumbremind/__main__.py index 0346575..f5bb16b 100644 --- a/src/dumbremind/__main__.py +++ b/src/dumbremind/__main__.py @@ -24,6 +24,15 @@ BASE_URL = os.getenv('CALDAV_URL') NEXT_DAYS = int(os.getenv('NEXT_DAYS')) +def _date_to_datetime(d): + if isinstance(d, datetime): + return d + elif isinstance(d, date): + return datetime.combine(d, time(0, 0)).replace(tzinfo=timezone.utc) + else: + return None + + def fill_event(component, calendar) -> dict[str, str]: # quite some data is tossed away here - like, the recurring rule. cur = {} @@ -34,10 +43,7 @@ def fill_event(component, calendar) -> dict[str, str]: # 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("%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) + cur["dstart"] = _date_to_datetime(component.start) endDate = component.end if endDate: cur["end"] = endDate.strftime("%m/%d/%Y %H:%M") @@ -47,6 +53,7 @@ def fill_event(component, calendar) -> dict[str, str]: def fill_todo(component, calendar) -> dict[str, str]: cur = {} cur["calendar"] = f"{calendar}" + cur["dstart"] = _date_to_datetime(component.get("dtstamp").dt) cur["summary"] = component.get("summary") cur["description"] = component.get("description") return cur @@ -92,6 +99,7 @@ def main(): for event in event_list: display_event(event) + todo_list = sorted(todo_list, key=lambda x: x['dstart']) for todo in todo_list: display_todo(todo)