fix: hochgeladene Logos nicht mehr in einem Screen-Ordner ablegen

Hochgeladene Logos landeten unter media/<site>/logos/. admin() behandelt
aber jeden Unterordner von media/<site>/ als Screen und schreibt ihn per
get_screen_config() dauerhaft in die Konfiguration. Der Logo-Ordner
erschien dadurch als Screen in der Oberflaeche, bekam beim Generieren
eine eigene welcome.html und liess sich wie ein Screen bespielen - und
die darin liegenden Logos wie Screen-Medien loeschen. Genau so ist eines
der hochgeladenen Logos verschwunden.

Logos liegen jetzt als media/<site>/logo_<slot>.png direkt im
Standort-Verzeichnis, so wie das Hintergrundbild als
media/<site>/background.* - aus demselben Grund. Die URL bleibt
/media/<site>/logos/<datei>, die Route liest aus dem
Standort-Verzeichnis; bestehende welcome.html funktionieren damit
unveraendert weiter.

Zusaetzlich wird der Ordnername "logos" bei der Screen-Erkennung
uebersprungen, damit Altbestaende nicht erneut als Screen auftauchen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Erik Thiele
2026-09-02 15:14:20 +02:00
parent 8de8a116bb
commit a3b9fe59b7
4 changed files with 26 additions and 13 deletions

17
app.py
View File

@@ -496,8 +496,10 @@ def media_background(site, filename):
@app.route("/media/<site>/logos/<path:filename>")
def media_logo(site, filename):
"""Liefert ein manuell hochgeladenes Kundenlogo aus.
Ohne Login erreichbar wie die übrigen Medien - der Player ist nicht angemeldet."""
path = os.path.join(MEDIA_DIR, site, generate_welcome_page.LOGO_DIRNAME)
Ohne Login erreichbar wie die übrigen Medien - der Player ist nicht angemeldet.
Die Dateien liegen direkt im Standort-Verzeichnis, damit kein Unterordner
entsteht, den admin() als Screen interpretieren wuerde."""
path = os.path.join(MEDIA_DIR, site)
return send_from_directory(path, filename)
@@ -950,7 +952,7 @@ def add_customer():
frueher = load_config().get("sites", {}).get(site, {}).get("welcome_data", {})
frueher_namen = frueher.get("names", [])
frueher_urls = frueher.get("logo_urls", [])
logo_prefix = f"/media/{site}/{generate_welcome_page.LOGO_DIRNAME}/"
logo_prefix = f"/media/{site}/{generate_welcome_page.LOGO_URL_PREFIX}/"
found_logos = [None, None, None]
for i, name in enumerate(customer_names):
@@ -1401,11 +1403,16 @@ def admin(site):
site_cfg = cfg.setdefault("sites", {}).setdefault(current_site, {"screens": {}})
config_screens = site_cfg.setdefault("screens", {})
# Ordner im Medienverzeichnis = Screens
# Ordner im Medienverzeichnis = Screens.
# "logos" ist reserviert: aeltere Versionen legten dort hochgeladene
# Kundenlogos ab, und ein solcher Ordner wuerde sonst dauerhaft als Screen
# in der Konfiguration landen.
if os.path.isdir(site_media_base):
for entry in os.listdir(site_media_base):
entry_path = os.path.join(site_media_base, entry)
if os.path.isdir(entry_path) and not entry.startswith("._"):
if (os.path.isdir(entry_path)
and not entry.startswith("._")
and entry != generate_welcome_page.LOGO_URL_PREFIX):
known_screens.add(entry)
# Screens aus Config ergänzen (auch ohne Ordner)