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:
@@ -45,10 +45,10 @@ with engine.connect() as conn:
|
||||
|
||||
# Default System Settings anlegen
|
||||
default_settings = [
|
||||
('supplement_table_url', '', 'URL für Vertretungsplan (Stundenplan-Änderungstabelle)'),
|
||||
('supplement_table_url', '', 'URL für Vertretungsplan / WebUntis (Stundenplan-Änderungstabelle)'),
|
||||
('supplement_table_enabled', 'false', 'Ob Vertretungsplan aktiviert ist'),
|
||||
('presentation_interval', '10', 'Standard Intervall für Präsentationen (Sekunden)'),
|
||||
('presentation_page_progress', 'true', 'Seitenfortschritt anzeigen (Page-Progress) für Präsentationen'),
|
||||
('presentation_page_progress', 'true', 'Seitenfortschrift anzeigen (Page-Progress) für Präsentationen'),
|
||||
('presentation_auto_progress', 'true', 'Automatischer Fortschritt (Auto-Progress) für Präsentationen'),
|
||||
]
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@ def update_supplement_table_settings():
|
||||
url_setting = SystemSetting(
|
||||
key='supplement_table_url',
|
||||
value=url,
|
||||
description='URL für Vertretungsplan (Stundenplan-Änderungstabelle)'
|
||||
description='URL für Vertretungsplan / WebUntis (Stundenplan-Änderungstabelle)'
|
||||
)
|
||||
session.add(url_setting)
|
||||
|
||||
@@ -201,3 +201,4 @@ def update_supplement_table_settings():
|
||||
return jsonify({'error': str(e)}), 500
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user