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
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