fix: pass authenticated status to all pages via _ctx helper
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
1bf42250b4
commit
4e659000f7
40
app.py
40
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) ───────────────────────────────
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user