Add support for PDF view
This commit is contained in:
@@ -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
|
||||
)
|
||||
Reference in New Issue
Block a user