diff --git a/main.py b/main.py index 432ed2d..7f10277 100755 --- a/main.py +++ b/main.py @@ -1,7 +1,9 @@ #!/usr/bin/env python +from datetime import datetime from flask import Flask from caldav import DAVClient, Calendar, Principal, Todo +import re import configparser @@ -12,6 +14,7 @@ def parseConfig() -> tuple[str, str, str, str]: return file.readline().strip() config = configparser.ConfigParser() + # config.read("/etc/calDAVtoCSV/config.ini") config.read("/etc/calDAVtoCSV/config.ini") calDavAddress = config.get("calDAV", "address") @@ -33,6 +36,19 @@ def fetch_10_next_todos_as_csv() -> str: calendar = principal.calendar(name=name) return calendar + def filter_todos(todos: list[Todo]) -> list[Todo]: + today = datetime.today().date() + return [ + todo + for todo in todos + if ( + match := re.search( + r"\d{4}-\d{2}-\d{2}", todo.icalendar_component["due"] + ) + ) + and datetime.strptime(match.group(), "%Y-%m-%d").date() > today + ] + def todos_to_csv(todos: list[Todo]) -> str: result = "".join( f"{todo.icalendar_component['uid']},{todo.icalendar_component['summary']}\n" @@ -46,7 +62,8 @@ def fetch_10_next_todos_as_csv() -> str: sorted_todos = calendar.todos(sort_keys=("due")) cut_todos = sorted_todos[:10] - csv = todos_to_csv(cut_todos) + filtered_todos = filter_todos(cut_todos) + csv = todos_to_csv(filtered_todos) return csv