|
|
@ -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() |