main.py
This commit is contained in:
parent
acc66afebb
commit
01171acf35
1 changed files with 18 additions and 1 deletions
19
main.py
19
main.py
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue