Sprint 13: WebCal-Abo / Kalender-Integration

- GET /api/webcal/token: erzeugt personl. Kalender-Token (einmalig)
- GET /api/webcal/{token}.ics: iCal-Feed mit Health-Erinnerungen,
  eigenen Events, Gassi-Treffen (erstellt + beigetreten), angenommenen Sittings
- RRULE für wiederkehrende Health-Einträge (intervall_tage)
- Migration: users.calendar_token (TEXT UNIQUE)
- Settings: "Kalender abonnieren" öffnet webcal://-Link + Kopier-Button
- api.js: API.webcal.getToken() / resetToken()
- SW-Cache: by-v104, APP_VER: 80
This commit is contained in:
rene 2026-04-16 22:39:50 +02:00
parent b58789373c
commit a4f74b6c64
8 changed files with 362 additions and 8 deletions

View file

@ -442,6 +442,8 @@ def _migrate(conn_factory):
# Admin: User-Sperre
("users", "is_banned", "INTEGER NOT NULL DEFAULT 0"),
("users", "ban_reason", "TEXT"),
# WebCal: Kalender-Abo-Token
("users", "calendar_token", "TEXT UNIQUE"),
]
with conn_factory() as conn:
for table, column, col_type in migrations: