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:
17
app.py
17
app.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user