From 4e659000f71d09514d2546f3451386e6d10ffd5c Mon Sep 17 00:00:00 2001 From: Christian Mueller Date: Thu, 23 Apr 2026 21:58:27 +0200 Subject: [PATCH] fix: pass authenticated status to all pages via _ctx helper Co-Authored-By: Claude Opus 4.6 (1M context) --- app.py | 40 ++++++++++++++-------------------------- 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/app.py b/app.py index ee5e1a9..8dc2e6e 100644 --- a/app.py +++ b/app.py @@ -51,6 +51,12 @@ app.mount("/static", StaticFiles(directory="static"), name="static") templates = Jinja2Templates(directory="templates") +def _ctx(request, page, **kwargs): + """Build template context with common variables.""" + authenticated = scheduler.graph is not None and scheduler.graph.is_authenticated() + return request, f"{page}.html", {"page": page, "authenticated": authenticated, **kwargs} + + # ── Dashboard ────────────────────────────────────────────────────────────── @app.get("/", response_class=HTMLResponse) @@ -108,11 +114,7 @@ async def dashboard(request: Request): }) conn.close() - authenticated = scheduler.graph is not None and scheduler.graph.is_authenticated() - return templates.TemplateResponse(request, "dashboard.html", { - "page": "dashboard", - "devices": device_data, "authenticated": authenticated, - }) + return templates.TemplateResponse(*_ctx(request, "dashboard", devices=device_data)) # ── Users ────────────────────────────────────────────────────────────────── @@ -126,9 +128,7 @@ async def users_page(request: Request): ORDER BY u.active DESC, u.display_name """).fetchall() conn.close() - return templates.TemplateResponse(request, "users.html", { - "page": "users", "users": users, - }) + return templates.TemplateResponse(*_ctx(request, "users", users=users)) @app.post("/api/users/sync") @@ -196,9 +196,7 @@ async def devices_page(request: Request): "SELECT * FROM wled_devices ORDER BY name, hostname" ).fetchall() conn.close() - return templates.TemplateResponse(request, "devices.html", { - "page": "devices", "devices": devices, - }) + return templates.TemplateResponse(*_ctx(request, "devices", devices=devices)) @app.post("/api/devices") @@ -276,10 +274,8 @@ async def assignments_page(request: Request): ).fetchall() conn.close() - return templates.TemplateResponse(request, "assignments.html", { - "page": "assignments", - "assignments": assignments, "users": users, "devices": devices, - }) + return templates.TemplateResponse(*_ctx(request, "assignments", + assignments=assignments, users=users, devices=devices)) @app.post("/api/assignments") @@ -316,9 +312,7 @@ async def colors_page(request: Request): conn = database.get_db() rules = conn.execute("SELECT * FROM color_rules ORDER BY status").fetchall() conn.close() - return templates.TemplateResponse(request, "colors.html", { - "page": "colors", "rules": rules, - }) + return templates.TemplateResponse(*_ctx(request, "colors", rules=rules)) @app.post("/api/colors") @@ -372,11 +366,7 @@ async def add_color( @app.get("/settings", response_class=HTMLResponse) async def settings_page(request: Request): settings = database.get_all_settings() - authenticated = scheduler.graph is not None and scheduler.graph.is_authenticated() - return templates.TemplateResponse(request, "settings.html", { - "page": "settings", - "settings": settings, "authenticated": authenticated, - }) + return templates.TemplateResponse(*_ctx(request, "settings", settings=settings)) @app.post("/api/settings") @@ -412,9 +402,7 @@ async def log_page(request: Request): "SELECT * FROM activity_log ORDER BY id DESC LIMIT 200" ).fetchall() conn.close() - return templates.TemplateResponse(request, "log.html", { - "page": "log", "logs": logs, - }) + return templates.TemplateResponse(*_ctx(request, "log", logs=logs)) # ── API Status (for dashboard auto-refresh) ───────────────────────────────