feat(events): add webuntis event, unify website payload, bump UI to alpha.13
- Add `webuntis` event type; event creation resolves URL from system `supplement_table_url`
- Consolidate settings: remove separate webuntis-url endpoints; use GET/POST /api/system-settings/supplement-table
- Scheduler: emit top-level `event_type` and unified `website` payload (`{ "type":"browser","url":"..." }`) for website/webuntis
- Preserve presentation payloads (page_progress/auto_progress) — presentation messages remain backwards-compatible
- Update defaults (`init_defaults.py`) and remove duplicate webuntis setting
- Docs & metadata: bump program-info to 2025.1.0-alpha.13; update README, copilot-instructions, DEV- and TECH-CHANGELOGs; add MQTT_EVENT_PAYLOAD_GUIDE.md and WEBUNTIS_EVENT_IMPLEMENTATION.md
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from flask import Blueprint, request, jsonify
|
||||
from server.permissions import editor_or_higher
|
||||
from server.database import Session
|
||||
from models.models import Event, EventMedia, MediaType, EventException
|
||||
from models.models import Event, EventMedia, MediaType, EventException, SystemSetting
|
||||
from datetime import datetime, timezone, timedelta
|
||||
from sqlalchemy import and_
|
||||
from dateutil.rrule import rrulestr
|
||||
@@ -375,6 +375,25 @@ def create_event():
|
||||
session.commit()
|
||||
event_media_id = media.id
|
||||
|
||||
# WebUntis: URL aus System-Einstellungen holen und EventMedia anlegen
|
||||
if event_type == "webuntis":
|
||||
# Hole WebUntis-URL aus Systemeinstellungen (verwendet supplement_table_url)
|
||||
webuntis_setting = session.query(SystemSetting).filter_by(key='supplement_table_url').first()
|
||||
webuntis_url = webuntis_setting.value if webuntis_setting else ''
|
||||
|
||||
if not webuntis_url:
|
||||
return jsonify({"error": "WebUntis / Supplement table URL not configured in system settings"}), 400
|
||||
|
||||
# EventMedia für WebUntis anlegen
|
||||
media = EventMedia(
|
||||
media_type=MediaType.website,
|
||||
url=webuntis_url,
|
||||
file_path=webuntis_url
|
||||
)
|
||||
session.add(media)
|
||||
session.commit()
|
||||
event_media_id = media.id
|
||||
|
||||
# created_by aus den Daten holen, Default: None
|
||||
created_by = data.get("created_by")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user