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")
|
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 ──────────────────────────────────────────────────────────────
|
# ── Dashboard ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@app.get("/", response_class=HTMLResponse)
|
@app.get("/", response_class=HTMLResponse)
|
||||||
@ -108,11 +114,7 @@ async def dashboard(request: Request):
|
|||||||
})
|
})
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
authenticated = scheduler.graph is not None and scheduler.graph.is_authenticated()
|
return templates.TemplateResponse(*_ctx(request, "dashboard", devices=device_data))
|
||||||
return templates.TemplateResponse(request, "dashboard.html", {
|
|
||||||
"page": "dashboard",
|
|
||||||
"devices": device_data, "authenticated": authenticated,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
# ── Users ──────────────────────────────────────────────────────────────────
|
# ── Users ──────────────────────────────────────────────────────────────────
|
||||||
@ -126,9 +128,7 @@ async def users_page(request: Request):
|
|||||||
ORDER BY u.active DESC, u.display_name
|
ORDER BY u.active DESC, u.display_name
|
||||||
""").fetchall()
|
""").fetchall()
|
||||||
conn.close()
|
conn.close()
|
||||||
return templates.TemplateResponse(request, "users.html", {
|
return templates.TemplateResponse(*_ctx(request, "users", users=users))
|
||||||
"page": "users", "users": users,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/users/sync")
|
@app.post("/api/users/sync")
|
||||||
@ -196,9 +196,7 @@ async def devices_page(request: Request):
|
|||||||
"SELECT * FROM wled_devices ORDER BY name, hostname"
|
"SELECT * FROM wled_devices ORDER BY name, hostname"
|
||||||
).fetchall()
|
).fetchall()
|
||||||
conn.close()
|
conn.close()
|
||||||
return templates.TemplateResponse(request, "devices.html", {
|
return templates.TemplateResponse(*_ctx(request, "devices", devices=devices))
|
||||||
"page": "devices", "devices": devices,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/devices")
|
@app.post("/api/devices")
|
||||||
@ -276,10 +274,8 @@ async def assignments_page(request: Request):
|
|||||||
).fetchall()
|
).fetchall()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
return templates.TemplateResponse(request, "assignments.html", {
|
return templates.TemplateResponse(*_ctx(request, "assignments",
|
||||||
"page": "assignments",
|
assignments=assignments, users=users, devices=devices))
|
||||||
"assignments": assignments, "users": users, "devices": devices,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/assignments")
|
@app.post("/api/assignments")
|
||||||
@ -316,9 +312,7 @@ async def colors_page(request: Request):
|
|||||||
conn = database.get_db()
|
conn = database.get_db()
|
||||||
rules = conn.execute("SELECT * FROM color_rules ORDER BY status").fetchall()
|
rules = conn.execute("SELECT * FROM color_rules ORDER BY status").fetchall()
|
||||||
conn.close()
|
conn.close()
|
||||||
return templates.TemplateResponse(request, "colors.html", {
|
return templates.TemplateResponse(*_ctx(request, "colors", rules=rules))
|
||||||
"page": "colors", "rules": rules,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/colors")
|
@app.post("/api/colors")
|
||||||
@ -372,11 +366,7 @@ async def add_color(
|
|||||||
@app.get("/settings", response_class=HTMLResponse)
|
@app.get("/settings", response_class=HTMLResponse)
|
||||||
async def settings_page(request: Request):
|
async def settings_page(request: Request):
|
||||||
settings = database.get_all_settings()
|
settings = database.get_all_settings()
|
||||||
authenticated = scheduler.graph is not None and scheduler.graph.is_authenticated()
|
return templates.TemplateResponse(*_ctx(request, "settings", settings=settings))
|
||||||
return templates.TemplateResponse(request, "settings.html", {
|
|
||||||
"page": "settings",
|
|
||||||
"settings": settings, "authenticated": authenticated,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/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"
|
"SELECT * FROM activity_log ORDER BY id DESC LIMIT 200"
|
||||||
).fetchall()
|
).fetchall()
|
||||||
conn.close()
|
conn.close()
|
||||||
return templates.TemplateResponse(request, "log.html", {
|
return templates.TemplateResponse(*_ctx(request, "log", logs=logs))
|
||||||
"page": "log", "logs": logs,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
# ── API Status (for dashboard auto-refresh) ───────────────────────────────
|
# ── API Status (for dashboard auto-refresh) ───────────────────────────────
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user