Mercurial > code > home > repos > gcalendarwatch
changeset 34:281e4b12dd37
create 500+ school day events for 2023
author | drewp@bigasterisk.com |
---|---|
date | Wed, 16 Aug 2023 18:14:22 -0700 |
parents | 0d4b481f5bd3 |
children | 6d602c53eb33 |
files | create_school_cals.py |
diffstat | 1 files changed, 79 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/create_school_cals.py Wed Aug 16 18:14:22 2023 -0700 @@ -0,0 +1,79 @@ +import datetime +import json +from pprint import pprint + +import tzlocal + +from calendar_connection import getCalendarService + + +def busdHoliday(s: datetime.datetime) -> bool: + if s.weekday() > 4: + return True + date = s.date().isoformat() + if date in { + '2023-09-04', + '2023-10-09', + '2023-10-27', + '2023-11-10', + '2024-01-15', + '2024-01-29', + '2024-02-16', + '2024-02-19', + '2024-05-17', + '2024-05-27', + }: + return True + if '2023-11-20' <= date <= '2023-11-24': + return True + if '2023-12-25' <= date <= '2024-01-05': + return True + if '2024-04-01' <= date <= '2024-04-05': + return True + return False + + +service = getCalendarService() + +calIdForPerson = json.load(open('gcalendarwatch.conf'))['calId'] + +s = datetime.datetime(2023, 8, 16, 9, 0, 0, tzinfo=tzlocal.get_localzone()) +while s < datetime.datetime(2024, 6, 4, tzinfo=tzlocal.get_localzone()): + s = s + datetime.timedelta(days=1) + for calId, school, grade, startHM in [ + (calIdForPerson['twins'], 'john muir', 'K', (9, 10)), + (calIdForPerson['asher'], 'john muir', '2', (9, 0)), + (calIdForPerson['ari'], 'BHS', '9', (8, 30)), + ]: + if busdHoliday(s): + continue + summary = f'{school} {grade}' + if school == 'john muir' and ('2023-10-23' <= s.date().isoformat() <= '2023-10-26'): + summary += ' (shortened day)' + if school == 'BHS' and ('2023-12-20' <= s.date().isoformat() <= '2023-12-22'): + summary += ' (finals schedule)' + + endHM = (23, 59) + if grade == 'K': + endHM = (14, 15) + elif grade == '2': + endHM = (14, 15) if s.weekday() == 2 else (15, 10) + elif grade == '9': + endHM = (14, 50) if s.weekday() == 2 else (15, 30) + s = s.replace(hour=startHM[0], minute=startHM[1]) + e = s.replace(hour=endHM[0], minute=endHM[1]) + + # schema: https://developers.google.com/calendar/api/v3/reference/events#resource-representations + event = { + 'summary': summary, + 'description': 'auto-gen v1', + 'start': { + 'dateTime': s.isoformat() + }, + 'end': { + 'dateTime': e.isoformat() + }, + } + print(event) + # https://developers.google.com/calendar/api/v3/reference/events/insert + print(service.events().insert(calendarId=calId, body=event).execute()) \ No newline at end of file