26 lines
1.0 KiB
Python
26 lines
1.0 KiB
Python
from fastapi import APIRouter, Depends, HTTPException, status
|
|
from fastapi.responses import FileResponse
|
|
|
|
from app.api.deps import require_roles
|
|
from app.models import AdminUser
|
|
from app.schemas.certificate_template import CertificateTemplateOut
|
|
from app.services.certificate_templates import get_certificate_template, list_certificate_templates
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("", response_model=list[CertificateTemplateOut])
|
|
def list_templates(
|
|
_: AdminUser = Depends(require_roles("system_admin", "certificate_admin", "readonly")),
|
|
) -> list[dict[str, object]]:
|
|
return [template.to_dict() for template in list_certificate_templates()]
|
|
|
|
|
|
@router.get("/{template_code}/preview")
|
|
def preview_template(template_code: str) -> FileResponse:
|
|
try:
|
|
template = get_certificate_template(template_code)
|
|
except (ValueError, FileNotFoundError) as exc:
|
|
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(exc)) from exc
|
|
return FileResponse(template.asset_path, media_type="image/png")
|