Hintergrundbild Willkommensseite
This commit is contained in:
99
app.py
99
app.py
@@ -185,6 +185,44 @@ def prio_redirect(site):
|
||||
return f"/admin/{site}/priority"
|
||||
|
||||
|
||||
def get_background_url(site):
|
||||
"""Prüft, ob für einen Standort ein benutzerdefiniertes Hintergrundbild existiert.
|
||||
Gibt die URL zurück oder None (dann wird das Standard-Wallpaper verwendet)."""
|
||||
site_dir = os.path.join(MEDIA_DIR, site)
|
||||
if not os.path.isdir(site_dir):
|
||||
return None
|
||||
for f in sorted(os.listdir(site_dir)):
|
||||
if f.startswith("background."):
|
||||
ext = os.path.splitext(f)[1].lower()
|
||||
if ext in (".jpg", ".jpeg", ".png"):
|
||||
return f"/media/{site}/background/{f}"
|
||||
return None
|
||||
|
||||
|
||||
def _regenerate_welcome_for_site(site):
|
||||
"""Regeneriert die Willkommensseite mit aktuellem Hintergrund,
|
||||
falls zuvor Kundendaten gespeichert wurden."""
|
||||
config = load_config()
|
||||
welcome_data = config.get("sites", {}).get(site, {}).get("welcome_data")
|
||||
if welcome_data:
|
||||
names = welcome_data.get("names", [])
|
||||
urls = welcome_data.get("logo_urls", [])
|
||||
if names:
|
||||
bg_url = get_background_url(site)
|
||||
generate_welcome_page.save_welcome_page(names, urls, site=site, background_url=bg_url)
|
||||
print(f"♻️ Willkommensseite für {site} mit aktualisiertem Hintergrund neu generiert")
|
||||
|
||||
|
||||
# -------------------------------------------------
|
||||
# Medien ausliefern (statische Dateien)
|
||||
# -------------------------------------------------
|
||||
@app.route("/media/<site>/background/<path:filename>")
|
||||
def media_background(site, filename):
|
||||
"""Liefert das Hintergrundbild für die Willkommensseite aus."""
|
||||
path = os.path.join(MEDIA_DIR, site)
|
||||
return send_from_directory(path, filename)
|
||||
|
||||
|
||||
# -------------------------------------------------
|
||||
# User & Login (Flask-Login)
|
||||
# -------------------------------------------------
|
||||
@@ -285,10 +323,16 @@ def add_customer():
|
||||
logo_urls[i] = vu
|
||||
break
|
||||
|
||||
html_filename = generate_welcome_page.save_welcome_page(valid_names, valid_urls, site=site)
|
||||
bg_url = get_background_url(site)
|
||||
html_filename = generate_welcome_page.save_welcome_page(valid_names, valid_urls, site=site, background_url=bg_url)
|
||||
|
||||
if html_filename:
|
||||
if generate_welcome_page.add_customer_to_lobby_playlist(html_filename, site=site):
|
||||
# Letzte Kundendaten für Background-Update speichern
|
||||
config = load_config()
|
||||
site_cfg = config.setdefault("sites", {}).setdefault(site, {})
|
||||
site_cfg["welcome_data"] = {"names": valid_names, "logo_urls": valid_urls}
|
||||
save_config(config)
|
||||
success = f"✅ Willkommensseite mit {len(valid_names)} Kunden erstellt!"
|
||||
else:
|
||||
error = "Fehler beim Hinzufügen zur Playliste"
|
||||
@@ -301,6 +345,7 @@ def add_customer():
|
||||
|
||||
config = load_config()
|
||||
site_list = get_site_list(config)
|
||||
background_url = get_background_url(site)
|
||||
return render_template(
|
||||
"customer.html",
|
||||
error=error,
|
||||
@@ -312,7 +357,8 @@ def add_customer():
|
||||
current_site=site,
|
||||
version=APP_VERSION,
|
||||
year=datetime.now().year,
|
||||
hostname=os.uname().nodename
|
||||
hostname=os.uname().nodename,
|
||||
background_url=background_url
|
||||
)
|
||||
|
||||
|
||||
@@ -711,6 +757,55 @@ def admin_priority(site):
|
||||
)
|
||||
|
||||
|
||||
# -------------------------------------------------
|
||||
# Admin: Hintergrundbild für Willkommensseite hochladen
|
||||
# -------------------------------------------------
|
||||
@app.route("/admin/<site>/upload-background", methods=["POST"])
|
||||
@login_required
|
||||
def upload_background(site):
|
||||
"""Lädt ein Hintergrundbild für die Willkommensseite hoch (pro Standort).
|
||||
Gespeichert als media/<site>/background.<ext>."""
|
||||
file = request.files.get("background")
|
||||
if not file:
|
||||
return redirect(f"/willkommen?site={site}")
|
||||
|
||||
ext = os.path.splitext(file.filename)[1].lower()
|
||||
if ext not in UPLOAD_EXTENSIONS:
|
||||
return "Ungültiger Dateityp", 400
|
||||
|
||||
site_dir = os.path.join(MEDIA_DIR, site)
|
||||
os.makedirs(site_dir, exist_ok=True)
|
||||
|
||||
# Alte Hintergrundbilder löschen
|
||||
for f in os.listdir(site_dir):
|
||||
if f.startswith("background."):
|
||||
os.remove(os.path.join(site_dir, f))
|
||||
|
||||
filename = f"background{ext}"
|
||||
file.save(os.path.join(site_dir, filename))
|
||||
|
||||
# Willkommensseite mit neuen Hintergrund neu generieren
|
||||
_regenerate_welcome_for_site(site)
|
||||
|
||||
return redirect(f"/willkommen?site={site}")
|
||||
|
||||
|
||||
@app.route("/admin/<site>/delete-background", methods=["POST"])
|
||||
@login_required
|
||||
def delete_background(site):
|
||||
"""Löscht das Hintergrundbild für die Willkommensseite."""
|
||||
site_dir = os.path.join(MEDIA_DIR, site)
|
||||
if os.path.isdir(site_dir):
|
||||
for f in os.listdir(site_dir):
|
||||
if f.startswith("background."):
|
||||
os.remove(os.path.join(site_dir, f))
|
||||
|
||||
# Willkommensseite mit Standard-Hintergrund neu generieren
|
||||
_regenerate_welcome_for_site(site)
|
||||
|
||||
return redirect(f"/willkommen?site={site}")
|
||||
|
||||
|
||||
# -------------------------------------------------
|
||||
# Admin: Screen-Einstellungen speichern
|
||||
# -------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user