Add support for PDF view

This commit is contained in:
2025-10-15 11:12:43 +02:00
parent 70fa1168ea
commit 8fe744afe1
5 changed files with 198 additions and 1 deletions

View File

@@ -6,7 +6,7 @@ from functools import partial
from typing import Annotated
import starlette.status as status
from fastapi import Depends, FastAPI, HTTPException, Request
from fastapi import Depends, FastAPI, HTTPException, Request, Response
from fastapi.responses import RedirectResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
@@ -21,6 +21,7 @@ from meal_manager.models import (
Subscription,
TeamRegistration,
)
from meal_manager.pdf import build_dinner_overview_pdf
sqlite_file_name = "database.db"
sqlite_url = f"sqlite:///{sqlite_file_name}"
@@ -332,3 +333,21 @@ async def delete_team_registration(
session.delete(session.scalars(statement).one())
session.commit()
return RedirectResponse(url=f"/event/{event_id}", status_code=status.HTTP_302_FOUND)
@app.get("/event/{event_id}/pdf")
def get_event_attendance_pdf(event_id: int, session: SessionDep):
statement = select(Event).where(Event.id == event_id)
event = session.scalars(statement).one()
pdf_buffer = build_dinner_overview_pdf(event)
headers = {
"Content-Disposition": f"inline; filename=attendance_event_{event_id}.pdf"
}
return Response(
content=pdf_buffer.getvalue(),
media_type="application/pdf",
headers=headers
)