web: fix TemplateResponse aufrufe für neue starlette/fastapi-API
Starlette ab 0.27 verlangt request als erstes Positionalargument bei TemplateResponse, das alte Schema (request im context-dict) bricht hart mit 'TypeError: unhashable type: dict' weil der context-dict an der name-Position landet und Jinja ihn als Cache-Key hashen will. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
fb3534553b
commit
7c8c256ffa
|
|
@ -45,8 +45,7 @@ async def index(request: Request):
|
|||
devices = usb.scan()
|
||||
with fwdb.open_db(DB_PATH) as conn:
|
||||
fw_count = conn.execute("SELECT COUNT(*) FROM firmware").fetchone()[0]
|
||||
return templates.TemplateResponse("index.html", {
|
||||
"request": request,
|
||||
return templates.TemplateResponse(request, "index.html", {
|
||||
"devices": devices,
|
||||
"fw_count": fw_count,
|
||||
"firmware_root": FIRMWARE_ROOT,
|
||||
|
|
@ -58,13 +57,12 @@ async def index(request: Request):
|
|||
|
||||
@app.get("/devices", response_class=HTMLResponse)
|
||||
async def devices_page(request: Request):
|
||||
return templates.TemplateResponse("devices.html", {"request": request})
|
||||
return templates.TemplateResponse(request, "devices.html", {})
|
||||
|
||||
|
||||
@app.get("/api/devices/html", response_class=HTMLResponse)
|
||||
async def devices_partial(request: Request):
|
||||
return templates.TemplateResponse("_devices.html", {
|
||||
"request": request,
|
||||
return templates.TemplateResponse(request, "_devices.html", {
|
||||
"devices": usb.scan(),
|
||||
})
|
||||
|
||||
|
|
@ -75,8 +73,7 @@ async def devices_partial(request: Request):
|
|||
async def firmware_page(request: Request):
|
||||
with fwdb.open_db(DB_PATH) as conn:
|
||||
rows = fwdb.list_all(conn)
|
||||
return templates.TemplateResponse("firmware.html", {
|
||||
"request": request,
|
||||
return templates.TemplateResponse(request, "firmware.html", {
|
||||
"firmware": rows,
|
||||
"firmware_root": FIRMWARE_ROOT,
|
||||
})
|
||||
|
|
@ -124,8 +121,7 @@ async def firmware_detail(request: Request, fw_id: int):
|
|||
row = fwdb.get_by_id(conn, fw_id)
|
||||
if row is None:
|
||||
raise HTTPException(404)
|
||||
return templates.TemplateResponse("firmware_detail.html", {
|
||||
"request": request,
|
||||
return templates.TemplateResponse(request, "firmware_detail.html", {
|
||||
"fw": row,
|
||||
"firmware_root": FIRMWARE_ROOT,
|
||||
})
|
||||
|
|
@ -139,8 +135,7 @@ async def browse(request: Request, path: str = ""):
|
|||
target, entries = filebrowse.list_dir(FIRMWARE_ROOT, path)
|
||||
except (filebrowse.PathEscapeError, FileNotFoundError, NotADirectoryError) as e:
|
||||
raise HTTPException(400, str(e))
|
||||
return templates.TemplateResponse("browse.html", {
|
||||
"request": request,
|
||||
return templates.TemplateResponse(request, "browse.html", {
|
||||
"rel": path,
|
||||
"entries": entries,
|
||||
"crumbs": filebrowse.breadcrumbs(path),
|
||||
|
|
@ -152,8 +147,7 @@ async def browse(request: Request, path: str = ""):
|
|||
|
||||
@app.get("/workflows/p10lite", response_class=HTMLResponse)
|
||||
async def workflow_p10lite(request: Request):
|
||||
return templates.TemplateResponse("p10lite.html", {
|
||||
"request": request,
|
||||
return templates.TemplateResponse(request, "p10lite.html", {
|
||||
"instructions": p10lite.erecovery_instructions(),
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue