peregrine/scripts/integrations
pyr0ball c1ec1fc9f6
All checks were successful
CI / test (pull_request) Successful in 53s
feat: push interview events to connected calendar integrations (#19)
Implements idempotent calendar push for Apple Calendar (CalDAV) and
Google Calendar from the Interviews kanban.

- db: add calendar_event_id column (migration) + set_calendar_event_id helper
- integrations/apple_calendar: create_event / update_event via caldav + icalendar
- integrations/google_calendar: create_event / update_event via google-api-python-client;
  test() now makes a real API call instead of checking file existence
- scripts/calendar_push: orchestrates push/update, builds event title from stage +
  job title + company, attaches job URL and company brief to description,
  defaults to noon UTC / 1hr duration
- app/pages/5_Interviews: "Add to Calendar" / "Update Calendar" button shown
  when interview date is set and a calendar integration is configured
- environment.yml: pin caldav, icalendar, google-api-python-client, google-auth
- tests/test_calendar_push: 9 tests covering create, update, error handling,
  event timing, idempotency, and missing job/date guards
2026-03-16 21:31:22 -07:00
..
__init__.py feat: integration base class + auto-discovery registry 2026-02-25 08:13:14 -08:00
airtable.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
apple_calendar.py feat: push interview events to connected calendar integrations (#19) 2026-03-16 21:31:22 -07:00
base.py feat: integration base class + auto-discovery registry 2026-02-25 08:13:14 -08:00
discord.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
dropbox.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
google_calendar.py feat: push interview events to connected calendar integrations (#19) 2026-03-16 21:31:22 -07:00
google_drive.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
google_sheets.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
home_assistant.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
mega.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
nextcloud.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
notion.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
onedrive.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00
slack.py feat: 13 integration implementations + config examples 2026-02-25 08:18:45 -08:00