tweaks
This commit is contained in:
@@ -22,7 +22,7 @@ from app.services.mix_calculator_service import (
|
||||
update_mix_calculator_session,
|
||||
)
|
||||
from app.services.mix_calculator_pdf import MixCalculatorPdfUnavailableError, build_mix_calculator_pdf
|
||||
from app.services.mix_calculator_filenames import mix_calculator_pdf_filename
|
||||
from app.services.mix_calculator_filenames import mix_calculator_pdf_filename, mix_calculator_preview_pdf_filename
|
||||
|
||||
router = APIRouter(prefix="/api/mix-calculator", tags=["mix-calculator"])
|
||||
|
||||
@@ -56,6 +56,28 @@ def preview_mix_calculator_session(
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@router.post("/preview/pdf")
|
||||
def preview_mix_calculator_session_pdf(
|
||||
payload: MixCalculatorSessionCreate,
|
||||
session: AuthSession = Depends(require_client_module_access("mix_calculator", "edit")),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
try:
|
||||
preview = calculate_mix_calculator_preview(db, tenant_id=session.tenant_id or "", payload=payload)
|
||||
pdf_bytes = build_mix_calculator_pdf(preview)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc
|
||||
except MixCalculatorPdfUnavailableError as exc:
|
||||
raise HTTPException(status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail=str(exc)) from exc
|
||||
|
||||
filename = mix_calculator_preview_pdf_filename(MixCalculatorPreviewRead.model_validate(preview))
|
||||
return Response(
|
||||
content=pdf_bytes,
|
||||
media_type="application/pdf",
|
||||
headers={"Content-Disposition": f'attachment; filename="{filename}"'},
|
||||
)
|
||||
|
||||
|
||||
@router.post("", response_model=MixCalculatorSessionRead, status_code=status.HTTP_201_CREATED)
|
||||
def create_saved_mix_calculator_session(
|
||||
payload: MixCalculatorSessionCreate,
|
||||
|
||||
Reference in New Issue
Block a user