Files

42 lines
1.3 KiB
Python

"""Configuração do Jinja2 e helpers de renderização/flash."""
from __future__ import annotations
from pathlib import Path
from fastapi.templating import Jinja2Templates
from starlette.requests import Request
from starlette.responses import HTMLResponse
from . import auth
from .config import get_settings
from .storage import money
TEMPLATES_DIR = Path(__file__).resolve().parent / "templates"
templates = Jinja2Templates(directory=str(TEMPLATES_DIR))
templates.env.filters["money"] = money
def flash(request: Request, message: str, level: str = "info") -> None:
bucket = request.session.setdefault("_flash", [])
bucket.append({"message": message, "level": level})
def pop_flash(request: Request) -> list[dict[str, str]]:
return request.session.pop("_flash", [])
def render(request: Request, name: str, status_code: int = 200, **context) -> HTMLResponse:
settings = get_settings()
base = {
"request": request,
"current_user": auth.current_user(request),
"csrf_token": auth.get_csrf_token(request),
"flashes": pop_flash(request),
"openai_enabled": settings.openai_enabled,
"app_name": "Lernotafiscal",
}
base.update(context)
return templates.TemplateResponse(request, name, base, status_code=status_code)