import html from fastapi import APIRouter, Depends, Request from fastapi.responses import HTMLResponse from app.auth import require_user from app.db.audit import get_audit_events from app.templates.layout import page router = APIRouter() @router.get("/audit", response_class=HTMLResponse) def audit_page(request: Request, user=Depends(require_user)): rows = "" for event in get_audit_events(): metadata = event.get("metadata") or "{}" metadata_preview = metadata if len(metadata) <= 180 else f"{metadata[:177]}..." rows += f""" {html.escape(event.get("created_at", "") or "")} {html.escape(event.get("username", "") or "")} {html.escape(event.get("action", "") or "")} {html.escape(event.get("target_type", "") or "")} {html.escape(str(event.get("target_id") or ""))} {html.escape(event.get("source", "") or "")} {html.escape(metadata_preview)} """ if not rows: rows = 'Zatím nejsou evidované žádné auditní události.' return page( "Audit", f"""

Audit

Přehled interních akcí provedených v portálu.

Události

{rows}
Čas Uživatel Akce Typ cíle Cíl Zdroj Metadata
""", user=user, )