feature/csv-templates

This commit is contained in:
hreyes
2026-03-03 10:13:35 -07:00
parent ededff9dce
commit ec8c3a7c2d
26 changed files with 253 additions and 46 deletions

View File

@@ -0,0 +1,35 @@
"""
Rutas para descargar plantillas CSV generadas desde código (sin archivos XLS/XLSX).
"""
from typing import Any, Dict
from fastapi import APIRouter, Depends, HTTPException
from fastapi.responses import Response
from core.security import get_current_user
from .registry import generate_csv_content, get_template_filename
router = APIRouter()
@router.get("/{template_id}", response_class=Response)
async def download_csv_template(
template_id: str,
current_user: Dict[str, Any] = Depends(get_current_user),
):
"""
Devuelve un CSV con solo la fila de cabeceras para la plantilla indicada.
Las cabeceras son los nombres canónicos definidos en cada template_config.
"""
content = generate_csv_content(template_id, include_bom=True)
if content is None:
raise HTTPException(status_code=404, detail=f"Plantilla desconocida: {template_id}")
filename = get_template_filename(template_id)
return Response(
content=content,
media_type="text/csv; charset=utf-8",
headers={
"Content-Disposition": f'attachment; filename="{filename}"',
},
)