diff --git a/panera_shifts_gcal_backend/__init__.py b/panera_shifts_gcal_backend/__init__.py new file mode 100644 index 0000000..2f11a07 --- /dev/null +++ b/panera_shifts_gcal_backend/__init__.py @@ -0,0 +1,53 @@ +import pytz +import calendar as cal_module +import datetime +from panera_shifts_gcal_backend.shifts import Shift +from panera_shifts_gcal_backend.config import config +from gapi.apis.calendar_api.models import Calendar +from gapi.apis.calendar_api.calendar_api import calendar_api +from panera_shifts import login, get_shifts_between + + +def init_calendar(): + api = calendar_api("Panera shift sync") + calendar = Calendar(api, config["calendar"]["calendar_name"].lower()) + return calendar + + +def input_all_shifts_for_month(): + # get latest inputted date; only show shifts past that date + calendar = init_calendar() + today = datetime.date.today() + max_day = cal_module.monthrange(today.year, today.month) + start = datetime.date(today.year, today.month, 1) + end = datetime.date(today.year, today.month, max_day[1]) + read_from = datetime.date(start.year, start.month, start.day) + start_dt = datetime.datetime.combine( + start, datetime.time(0, 0, 0, 0), datetime.timezone.utc + ) + end_dt = datetime.datetime.combine( + end + datetime.timedelta(days=1), + datetime.time(0, 0, 0, 0), + datetime.timezone.utc, + ) + for event in calendar.get_events(start_dt, end_dt): + if event.end > read_from: + read_from = event.end + panera_session = login( + config["credentials"]["username"], config["credentials"]["password"] + ) + shifts_info = get_shifts_between( + panera_session, + datetime.date(read_from.year, read_from.month, read_from.day), + end, + ) + timezone = shifts_info["data"]["timezone"] + cafe_info = shifts_info["data"]["currentShifts"]["cafe"][0] + for shift in shifts_info["data"]["currentShifts"]["shifts"]: + s = Shift.from_dict(shift, cafe_info, timezone) + e = s.to_Event() + calendar.update_or_add_event(e) + + +if __name__ == "__main__": + input_all_shifts_for_month() diff --git a/panera_shifts_gcal_backend/config.py b/panera_shifts_gcal_backend/config.py new file mode 100644 index 0000000..24d6452 --- /dev/null +++ b/panera_shifts_gcal_backend/config.py @@ -0,0 +1,10 @@ +import appdirs +import os +import toml +from pathlib import Path + +my_appdirs = appdirs.AppDirs("panera_shifts_gcal") +os.makedirs(my_appdirs.user_config_dir, exist_ok=True) +config_file = Path(my_appdirs.user_config_dir) / "config.toml" +with config_file.open() as config: + config = toml.load(config)