This commit is contained in:
Stuce 2025-12-12 11:29:43 +01:00
parent acc66afebb
commit 01171acf35

19
main.py
View file

@ -1,7 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
from datetime import datetime
from flask import Flask from flask import Flask
from caldav import DAVClient, Calendar, Principal, Todo from caldav import DAVClient, Calendar, Principal, Todo
import re
import configparser import configparser
@ -12,6 +14,7 @@ def parseConfig() -> tuple[str, str, str, str]:
return file.readline().strip() return file.readline().strip()
config = configparser.ConfigParser() config = configparser.ConfigParser()
# config.read("/etc/calDAVtoCSV/config.ini")
config.read("/etc/calDAVtoCSV/config.ini") config.read("/etc/calDAVtoCSV/config.ini")
calDavAddress = config.get("calDAV", "address") calDavAddress = config.get("calDAV", "address")
@ -33,6 +36,19 @@ def fetch_10_next_todos_as_csv() -> str:
calendar = principal.calendar(name=name) calendar = principal.calendar(name=name)
return calendar 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: def todos_to_csv(todos: list[Todo]) -> str:
result = "".join( result = "".join(
f"{todo.icalendar_component['uid']},{todo.icalendar_component['summary']}\n" 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")) sorted_todos = calendar.todos(sort_keys=("due"))
cut_todos = sorted_todos[:10] 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 return csv