From 4b29d9a27fdafaef47889e06dcdfe721337d507f Mon Sep 17 00:00:00 2001 From: Erik Thiele Date: Fri, 5 Jun 2026 14:01:05 +0200 Subject: [PATCH] =?UTF-8?q?Standort=20l=C3=B6schen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 4 ++++ README.md | 3 +++ app.py | 31 +++++++++++++++++++++++++++++++ config.json | 2 +- templates/_header.html | 4 ++++ templates/_styles.html | 2 +- templates/admin.html | 10 ++++++++++ 7 files changed, 54 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 50e7386..c3ecad9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -34,6 +34,8 @@ Standorte (sites) sind die oberste Organisationsebene und gruppieren Screens. | `POST /api/customer` | API-Endpunkt (JSON mit "site"-Feld) | | `GET /admin//add-screen?name=` | Neuen Screen anlegen | | `POST /admin//delete-screen/` | Screen + Medien löschen | +| `GET /add-site?name=` | Neuen Standort anlegen | +| `POST /admin//delete-site` | Standort + alle Screens/Medien löschen | ## Behavior To Preserve @@ -54,6 +56,8 @@ Standorte (sites) sind die oberste Organisationsebene und gruppieren Screens. - `add_screen` legt ein Verzeichnis unter `media///` an und einen Config-Eintrag. - `delete_screen` entfernt den Screen aus der Config und löscht das Verzeichnis rekursiv. - Custom-URL-Button: pro Screen konfigurierbar (`custom_url` + `custom_url_label` + `custom_url_target`) im Admin-Formular; wird im Player als Button oben links angezeigt und öffnet die URL wahlweise in einem iframe-Overlay mit Zurück-Button (`overlay`) oder per Direkt-Weiterleitung (`redirect`); Player pausiert während das Overlay geöffnet ist. +- Neue Standorte können über den `+`-Button im Header oder über `GET /add-site?name=` angelegt werden. +- `delete_site` entfernt den Standort aus Config und löscht das Medienverzeichnis rekursiv. ## Repo Quirks diff --git a/README.md b/README.md index d76f947..2ef1193 100755 --- a/README.md +++ b/README.md @@ -129,6 +129,8 @@ docker compose up -d | `POST /api/customer` | API-Endpunkt für Willkommensseite (JSON) | | `GET /media///` | Medien-Datei ausliefern | | `GET /media/priority/` | Priority-Medien (global) | +| `GET /add-site?name=` | Neuen Standort anlegen | +| `POST /admin//delete-site` | Standort + alle Screens/Medien löschen | ### Admin-Portal @@ -142,6 +144,7 @@ http://localhost:5005/admin/ - Priority-Playlist verwalten - Willkommensseite generieren (bis zu 3 Kundenlogos) - Custom-URL-Aktionsbutton pro Screen konfigurieren (iframe-Overlay oder Weiterleitung) +- Standorte anlegen & löschen ### Player-URL diff --git a/app.py b/app.py index 091250d..8c498d1 100755 --- a/app.py +++ b/app.py @@ -477,6 +477,37 @@ def admin_redirect(): return "

Kein Standort konfiguriert

Bitte lege einen Standort im media-Verzeichnis an.

", 200 +@app.route("/add-site") +@login_required +def add_site(): + name = request.args.get("name", "").strip().lower() + if not name: + return redirect("/admin") + + cfg = load_config() + cfg.setdefault("sites", {}).setdefault(name, {"screens": {}}) + os.makedirs(os.path.join(MEDIA_DIR, name), exist_ok=True) + save_config(cfg) + + return redirect(f"/admin/{name}") + + +@app.route("/admin//delete-site", methods=["POST"]) +@login_required +def delete_site(site): + cfg = load_config() + cfg.get("sites", {}).pop(site, None) + save_config(cfg) + + site_dir = os.path.join(MEDIA_DIR, site) + if os.path.isdir(site_dir): + import shutil + shutil.rmtree(site_dir) + + sites = get_site_list(cfg) + return redirect(f"/admin/{sites[0]}" if sites else "/admin") + + @app.route("/admin/") @login_required def admin(site): diff --git a/config.json b/config.json index d51b040..362a31f 100755 --- a/config.json +++ b/config.json @@ -37,7 +37,7 @@ "newsticker_enabled": true, "custom_url": "https://dva-stage.cancom-ds.de/voice-agent", "custom_url_label": "Welcome Agent", - "custom_url_enabled": true, + "custom_url_enabled": false, "custom_url_target": "redirect" }, "casino": { diff --git a/templates/_header.html b/templates/_header.html index e786e2b..2a7ceb8 100644 --- a/templates/_header.html +++ b/templates/_header.html @@ -20,6 +20,10 @@ {% endfor %} +
+ +
+