Positionen Action Button und DVA Button hinzugefügt

This commit is contained in:
Erik Thiele
2026-06-19 12:09:50 +02:00
parent 59be0fd789
commit 35e22718e3
10 changed files with 2940 additions and 2308 deletions

61
app.py
View File

@@ -35,7 +35,7 @@ BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MEDIA_DIR = os.path.join(BASE_DIR, "media") # Medien-Dateien je Standort/Screen
CONFIG_FILE = os.path.join(BASE_DIR, "config.json") # Persistente Konfiguration
APP_VERSION = "5.1.0"
APP_VERSION = "5.5.0"
UPLOAD_EXTENSIONS = {".jpg", ".jpeg", ".png", ".mp4"}
app = Flask(__name__)
@@ -534,7 +534,15 @@ def player(site, screen):
custom_url=screen_cfg.get("custom_url", ""),
custom_url_label=screen_cfg.get("custom_url_label", ""),
custom_url_enabled=screen_cfg.get("custom_url_enabled", False),
custom_url_target=screen_cfg.get("custom_url_target", "overlay")
custom_url_target=screen_cfg.get("custom_url_target", "overlay"),
custom_url_position=screen_cfg.get("custom_url_position", "top-left"),
stay_on_first=screen_cfg.get("stay_on_first", False),
voice_agent_enabled=screen_cfg.get("voice_agent_enabled", False),
voice_agent_show_image=screen_cfg.get("voice_agent_show_image") if screen_cfg.get("voice_agent_show_image") is not None else False,
voice_agent_url=config.get("voice_agent_url", ""),
voice_agent_label=screen_cfg.get("voice_agent_label", "Digitaler Assistent"),
voice_agent_target=screen_cfg.get("voice_agent_target", "overlay"),
voice_agent_position=screen_cfg.get("voice_agent_position", "top-left")
)
@@ -565,7 +573,13 @@ def playlist_hash(site, screen):
# Admin
# -------------------------------------------------
@app.route("/admin")
@app.route("/", strict_slashes=False)
def root_redirect():
"""Root weiterleiten zum Login."""
return redirect("/login")
@app.route("/admin", strict_slashes=False)
@login_required
def admin_redirect():
"""Leitet zum ersten konfigurierten Standort weiter."""
@@ -609,7 +623,7 @@ def delete_site(site):
return redirect(f"/admin/{sites[0]}" if sites else "/admin")
@app.route("/admin/<site>")
@app.route("/admin/<site>", strict_slashes=False)
@login_required
def admin(site):
"""
@@ -730,7 +744,8 @@ def admin(site):
version=APP_VERSION,
year=datetime.now().year,
hostname=os.uname().nodename,
server_url=cfg.get("server_url", "")
server_url=cfg.get("server_url", ""),
voice_agent_url=cfg.get("voice_agent_url", "")
)
@@ -812,7 +827,7 @@ def delete_background(site):
@app.route("/admin/<site>/update/<screen>", methods=["POST"])
@login_required
def update_screen(site, screen):
"""Speichert die Einstellungen für einen Screen (Intervall, Newsticker, Show-Bilder/Videos, Custom-URL)."""
"""Speichert die allgemeinen Einstellungen für einen Screen (Intervall, Newsticker, Show-Bilder/Videos)."""
config = load_config()
cfg = get_screen_config(config, site, screen)
@@ -821,10 +836,44 @@ def update_screen(site, screen):
cfg["show_videos"] = "show_videos" in request.form
cfg["newsticker_text"] = request.form.get("newsticker_text", "")
cfg["newsticker_enabled"] = "newsticker_enabled" in request.form
cfg["stay_on_first"] = "stay_on_first" in request.form
save_config(config)
return redirect(f"/admin/{site}")
@app.route("/admin/<site>/update-actions/<screen>", methods=["POST"])
@login_required
def update_screen_actions(site, screen):
"""Speichert die Aktionen-Einstellungen für einen Screen (Custom-URL + Position)."""
config = load_config()
cfg = get_screen_config(config, site, screen)
cfg["custom_url"] = request.form.get("custom_url", "").strip()
cfg["custom_url_label"] = request.form.get("custom_url_label", "").strip()
cfg["custom_url_enabled"] = "custom_url_enabled" in request.form
cfg["custom_url_target"] = request.form.get("custom_url_target", "overlay")
cfg["custom_url_position"] = request.form.get("custom_url_position", "top-left")
save_config(config)
return redirect(f"/admin/{site}")
# -------------------------------------------------
# Admin: Voice-Agent-Einstellungen speichern
# -------------------------------------------------
@app.route("/admin/<site>/update-voice/<screen>", methods=["POST"])
@login_required
def update_screen_voice(site, screen):
"""Speichert die Voice-Agent-Einstellungen für einen Screen (Enabled, Label, Target, Position)."""
config = load_config()
cfg = get_screen_config(config, site, screen)
cfg["voice_agent_enabled"] = "voice_agent_enabled" in request.form
cfg["voice_agent_show_image"] = "voice_agent_show_image" in request.form
cfg["voice_agent_label"] = request.form.get("voice_agent_label", "").strip()
cfg["voice_agent_target"] = request.form.get("voice_agent_target", "overlay")
cfg["voice_agent_position"] = request.form.get("voice_agent_position", "top-left")
save_config(config)
return redirect(f"/admin/{site}")