Positionen Action Button und DVA Button hinzugefügt
This commit is contained in:
61
app.py
61
app.py
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user