add reminder functionality

This commit is contained in:
2023-02-13 14:34:33 +01:00
parent 9975f1ea08
commit ea8809b7d9

View File

@@ -15,16 +15,18 @@ import caldav
class CaldavHandler:
def get_config(self, path):
with open("./config.json") as f:
with open(path) as f:
return json.load(f)
def __init__(self):
self._config_path = "./config.json"
self._event_reminder_path = "./event_reminders.json"
if not exists(self._config_path):
print("No config file found. Aborting.")
self._config = self.get_config(self._config_path)
self._event_reminder_config = self.get_config(self._event_reminder_path)
self._caldavclient = caldav.DAVClient(self._config["caldav"]["url"],
username=self._config["caldav"]["username"],
password=self._config["caldav"]["password"])
@@ -99,6 +101,45 @@ class CaldavHandler:
events = self.get_events(datetime.date.today(), datetime.date.today() + datetime.timedelta(days=7))
return self.send_events(events, 7)
def time_to_remind(self, event_name, days_to_remind):
events = self.get_events(datetime.date.today(), datetime.date.today() + datetime.timedelta(days=days_to_remind + 1))
datetime_to_remind = datetime.date.today() + datetime.timedelta(days=days_to_remind)
datetime_to_remind = datetime_to_remind.strftime("%x")
print(datetime_to_remind)
#create a map where each day is a key and list of events are the values
event_map = self.get_event_map(events, days_to_remind + 1)
print(datetime_to_remind)
print(event_map)
if datetime_to_remind not in event_map:
return False
for event_name in event_map[datetime_to_remind]:
print("found event!")
return True
return False
def send_reminders(self):
print(self._event_reminder_config)
result = []
for event_name in self._event_reminder_config:
print("iterating event configs")
print(event_name)
days = self._event_reminder_config[event_name]["days"]
print(days)
if not self.time_to_remind(event_name, days):
continue
reminder_message = self._event_reminder_config[event_name]["message"]
result.append(reminder_message)
print(reminder_message)
return result
def print_today(self):
events = self.get_events(datetime.date.today(), datetime.date.today() + datetime.timedelta(days=1))
#self.send_reminders()
return self.send_events(events, 1)