From ea8809b7d9279de8f30b5c5fb154949e67716553 Mon Sep 17 00:00:00 2001 From: kalipso Date: Mon, 13 Feb 2023 14:34:33 +0100 Subject: [PATCH] add reminder functionality --- my_project_name/caldav_handler.py | 43 ++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/my_project_name/caldav_handler.py b/my_project_name/caldav_handler.py index 8bc6db2..fb86be8 100644 --- a/my_project_name/caldav_handler.py +++ b/my_project_name/caldav_handler.py @@ -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)