fix: fix TemplateResponse API for Starlette compatibility

Use new TemplateResponse(request, name, context) signature.
Add Flask compat shims (get_flashed_messages, url_for, session).
This commit is contained in:
ZdenekSrotyr 2026-03-27 16:59:04 +01:00
parent 1287e63ed9
commit fb1e60d8e1

View file

@ -46,7 +46,11 @@ def _build_context(request: Request, user: Optional[dict] = None, **extra) -> di
@staticmethod @staticmethod
def theme_overrides(): def theme_overrides():
return get_theme() theme = get_theme()
# Return dict of CSS variable overrides (only non-empty values)
if isinstance(theme, dict):
return {k: v for k, v in theme.items() if v}
return {}
ctx = { ctx = {
"request": request, "request": request,
@ -78,7 +82,7 @@ async def login_page(request: Request):
{"name": "google", "display_name": "Google", "icon": "google"}, {"name": "google", "display_name": "Google", "icon": "google"},
] ]
ctx = _build_context(request, providers=providers) ctx = _build_context(request, providers=providers)
return templates.TemplateResponse("login.html", ctx) return templates.TemplateResponse(request, "login.html", ctx)
@router.get("/dashboard", response_class=HTMLResponse) @router.get("/dashboard", response_class=HTMLResponse)
@ -108,7 +112,7 @@ async def dashboard(
datasets=datasets, datasets=datasets,
account_status="active", account_status="active",
) )
return templates.TemplateResponse("dashboard.html", ctx) return templates.TemplateResponse(request, "dashboard.html", ctx)
@router.get("/catalog", response_class=HTMLResponse) @router.get("/catalog", response_class=HTMLResponse)
@ -158,7 +162,7 @@ async def catalog(
datasets=datasets, datasets=datasets,
enabled_datasets=enabled_datasets, enabled_datasets=enabled_datasets,
) )
return templates.TemplateResponse("catalog.html", ctx) return templates.TemplateResponse(request, "catalog.html", ctx)
@router.get("/corporate-memory", response_class=HTMLResponse) @router.get("/corporate-memory", response_class=HTMLResponse)
@ -182,7 +186,7 @@ async def corporate_memory(
knowledge_items=items, knowledge_items=items,
governance_mode=cm_config.get("distribution_mode"), governance_mode=cm_config.get("distribution_mode"),
) )
return templates.TemplateResponse("corporate_memory.html", ctx) return templates.TemplateResponse(request, "corporate_memory.html", ctx)
@router.get("/corporate-memory/admin", response_class=HTMLResponse) @router.get("/corporate-memory/admin", response_class=HTMLResponse)
@ -194,7 +198,7 @@ async def corporate_memory_admin(
repo = KnowledgeRepository(conn) repo = KnowledgeRepository(conn)
pending = repo.list_items(statuses=["pending"], limit=100) pending = repo.list_items(statuses=["pending"], limit=100)
ctx = _build_context(request, user=user, pending_items=pending) ctx = _build_context(request, user=user, pending_items=pending)
return templates.TemplateResponse("corporate_memory_admin.html", ctx) return templates.TemplateResponse(request, "corporate_memory_admin.html", ctx)
@router.get("/activity-center", response_class=HTMLResponse) @router.get("/activity-center", response_class=HTMLResponse)
@ -208,7 +212,7 @@ async def activity_center(
"total_items": len(repo.list_items(limit=10000)), "total_items": len(repo.list_items(limit=10000)),
} }
ctx = _build_context(request, user=user, stats=stats) ctx = _build_context(request, user=user, stats=stats)
return templates.TemplateResponse("activity_center.html", ctx) return templates.TemplateResponse(request, "activity_center.html", ctx)
@router.get("/admin/tables", response_class=HTMLResponse) @router.get("/admin/tables", response_class=HTMLResponse)
@ -221,4 +225,4 @@ async def admin_tables(
repo = TableRegistryRepository(conn) repo = TableRegistryRepository(conn)
tables = repo.list_all() tables = repo.list_all()
ctx = _build_context(request, user=user, registered_tables=tables) ctx = _build_context(request, user=user, registered_tables=tables)
return templates.TemplateResponse("admin_tables.html", ctx) return templates.TemplateResponse(request, "admin_tables.html", ctx)