feat: Home Assistant Kalender-Integration + Bugfix ausgeblendete Kalender

- Neue Integration: Home Assistant als Kalenderquelle via REST-API
  (GET /api/calendars + GET /api/calendars/{entity_id})
- Authentifizierung per Long-Lived Access Token
- Neues Modal zum Verbinden (Name, URL, Token) mit Fehlerbehandlung
- Kalender einzeln aktivierbar/deaktivierbar, Farbe änderbar
- Ausgeblendete HA-Kalender in Einstellungen wiederherstellbar
- Sync- und Trennen-Buttons in den Einstellungen
- Bugfix: CalDAV- und Google-Kalender mit sidebar_hidden=true
  liefern nun keine Events mehr im Kalender
This commit is contained in:
Scarriffle
2026-04-13 08:46:43 +02:00
parent 5a7d8ad362
commit f28aa706e7
7 changed files with 508 additions and 4 deletions

View File

@@ -266,7 +266,7 @@ def get_events(
for account in accounts:
for calendar in account.calendars:
if not calendar.enabled:
if not calendar.enabled or calendar.sidebar_hidden:
continue
try:
events = caldav_client.fetch_events(
@@ -355,6 +355,19 @@ def get_events(
logger.error("Error fetching Google Calendar for %s: %s", g_acc.email, exc)
google_errors.append({"email": g_acc.email})
# ── Home Assistant events ─────────────────────────────
from routers.homeassistant_router import get_ha_events
ha_accounts = (
db.query(models.HomeAssistantAccount)
.filter(models.HomeAssistantAccount.user_id == current_user.id)
.all()
)
for ha_acc in ha_accounts:
try:
all_events.extend(get_ha_events(ha_acc, start_dt, end_dt))
except Exception as exc:
logger.error("Error fetching HA events for %s: %s", ha_acc.name, exc)
return {"events": all_events, "errors": google_errors}