"""Sygnifikatory: wyszukiwarka po bazach.""" from __future__ import annotations from fastapi import Form, Request from fastapi.responses import HTMLResponse import httpx from app.features import Feature from app.podstawa import (features, app, templates, logic, security, _logic_error) # ---------------- Sygnifikatory (wyszukiwarka w bazach) ---------------- @app.get("/significators", response_class=HTMLResponse) def significators_form(request: Request): return templates.TemplateResponse(request, "significators.html", {"result": None, "form": {}}) @app.post("/significators", response_class=HTMLResponse) def significators_search( request: Request, query: str = Form(...), field: str = Form("name"), exact: bool = Form(False), limit: int = Form(25), ): form = {"query": query, "field": field, "exact": exact, "limit": limit} ctx: dict = {"form": form, "result": None, "error": None} try: ctx["result"] = logic.query(query=query, field=field, exact=exact, limit=limit) # ile rekordów baz oddaliśmy — do dziennika audytowego (PRE-17), bez treści security.audit_records(request, len((ctx["result"] or {}).get("rows") or [])) except httpx.HTTPError as e: ctx["error"] = _logic_error(e) return templates.TemplateResponse(request, "significators.html", ctx) features.zarejestruj( ekran=Feature("significators", "Sygnifikatory", "Wyszukiwarka po bazach.", "Ekrany", "/significators", kolejnosc=50), trasy={("GET", "/significators"): "significators", ("POST", "/significators"): "significators"}, zasoby={"s-significators.css": "significators"}, )