Add sync to grist functionality

This commit is contained in:
2025-10-26 21:09:22 +01:00
parent a11f1a6c38
commit 9efccccc21
6 changed files with 192 additions and 39 deletions

View File

@@ -13,6 +13,7 @@ from fastapi.templating import Jinja2Templates
from sqlalchemy import create_engine, select
from sqlalchemy.orm import Session
from meal_manager.grist import sync_with_grist
from meal_manager.models import (
Base,
Event,
@@ -295,7 +296,11 @@ async def delete_event(
@app.get("/event/{event_id}")
async def read_event(
request: Request, event_id: int, session: SessionDep, user: UserDep
request: Request,
event_id: int,
session: SessionDep,
user: UserDep,
message: str | None = None,
):
statement = select(Event).where(Event.id == event_id)
event = session.scalars(statement).one()
@@ -318,6 +323,7 @@ async def read_event(
"households": households,
"now": datetime.now(),
"user": user,
"message": message,
},
)
@@ -423,3 +429,17 @@ def get_event_attendance_pdf(event_id: int, session: SessionDep):
return Response(
content=pdf_buffer.getvalue(), media_type="application/pdf", headers=headers
)
@app.get("/event/{event_id}/sync_with_grist")
def sync_with_grist_route(event_id: int, session: SessionDep, user: StrictUserDep):
statement = select(Event).where(Event.id == event_id)
event = session.scalars(statement).one()
sync_with_grist(event)
return RedirectResponse(
url=f"/event/{event_id}?message=Erfolgreich%20an%20Abrechnung%20%C3%BCbertragen",
status_code=status.HTTP_302_FOUND,
)