fix(grist): Don't send request to grist of nothing is written
This commit is contained in:
@@ -14,7 +14,11 @@ config = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def sync_with_grist(event):
|
def sync_with_grist(event) -> int:
|
||||||
|
"""Writes the event's registrations to Grist.
|
||||||
|
If a registration already exists for a given household, it is not overwritten.
|
||||||
|
Returns the number of new records.
|
||||||
|
"""
|
||||||
grist = GristApi(config=config)
|
grist = GristApi(config=config)
|
||||||
|
|
||||||
status_code, grist_response = grist.list_records(
|
status_code, grist_response = grist.list_records(
|
||||||
@@ -53,4 +57,8 @@ def sync_with_grist(event):
|
|||||||
"meal_manager_event_id": event.id,
|
"meal_manager_event_id": event.id,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
grist.add_records("Transactions", new_records)
|
if new_records:
|
||||||
|
grist.add_records("Transactions", new_records)
|
||||||
|
return len(new_records)
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from contextlib import asynccontextmanager
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
|
from urllib.parse import quote_plus
|
||||||
|
|
||||||
import starlette.status as status
|
import starlette.status as status
|
||||||
from fastapi import Depends, FastAPI, HTTPException, Request, Response
|
from fastapi import Depends, FastAPI, HTTPException, Request, Response
|
||||||
@@ -446,9 +447,11 @@ def sync_with_grist_route(event_id: int, session: SessionDep, user: StrictUserDe
|
|||||||
statement = select(Event).where(Event.id == event_id)
|
statement = select(Event).where(Event.id == event_id)
|
||||||
event = session.scalars(statement).one()
|
event = session.scalars(statement).one()
|
||||||
|
|
||||||
sync_with_grist(event)
|
entries_written = sync_with_grist(event)
|
||||||
|
message = "Es wurden keine Einträge geschrieben."
|
||||||
|
if entries_written > 0:
|
||||||
|
message = f"Erfolgreich {entries_written} Einträge geschrieben."
|
||||||
return RedirectResponse(
|
return RedirectResponse(
|
||||||
url=f"/event/{event_id}?message=Erfolgreich%20an%20Abrechnung%20%C3%BCbertragen",
|
url=f"/event/{event_id}?message={quote_plus(message)}",
|
||||||
status_code=status.HTTP_302_FOUND,
|
status_code=status.HTTP_302_FOUND,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user