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

View File

@@ -161,7 +161,12 @@ def remove_logo_background(image, tolerance=LOGO_TOLERANCE):
return img, None
LOGO_DIRNAME = "logos"
# Logos liegen als Dateien direkt im Standort-Verzeichnis, nicht in einem
# Unterordner: admin() behandelt jeden Unterordner von media/<site>/ als Screen
# und legt ihn dauerhaft in der Konfiguration an. Das Hintergrundbild wird aus
# demselben Grund als media/<site>/background.* abgelegt.
LOGO_URL_PREFIX = "logos" # nur der Pfadbestandteil in der URL
LOGO_FILENAME = "logo_{slot}.png"
LOGO_EXTENSIONS = (".png", ".jpg", ".jpeg", ".gif", ".webp", ".bmp")
@@ -198,12 +203,12 @@ def save_uploaded_logo(file_storage, site, slot, freistellen=True):
if img.size != vorher:
print(f"✅ Generate - Logo zugeschnitten: {vorher[0]}x{vorher[1]} → {img.size[0]}x{img.size[1]}")
logo_dir = os.path.join(MEDIA_DIR, site, LOGO_DIRNAME)
os.makedirs(logo_dir, exist_ok=True)
dateiname = f"logo_{slot}.png"
img.save(os.path.join(logo_dir, dateiname), "PNG")
site_dir = os.path.join(MEDIA_DIR, site)
os.makedirs(site_dir, exist_ok=True)
dateiname = LOGO_FILENAME.format(slot=slot)
img.save(os.path.join(site_dir, dateiname), "PNG")
url = f"/media/{site}/{LOGO_DIRNAME}/{dateiname}?v={int(time.time())}"
url = f"/media/{site}/{LOGO_URL_PREFIX}/{dateiname}?v={int(time.time())}"
print(f"✅ Generate - Logo hochgeladen: {url}"
+ (f" (Hinweis: {hinweis})" if hinweis else ""))
return url, hinweis