新增多证书模板管理流程
This commit is contained in:
25
backend/app/api/routes/admin_certificate_templates.py
Normal file
25
backend/app/api/routes/admin_certificate_templates.py
Normal file
@@ -0,0 +1,25 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user