From 05c2b6daf4836f79ed8c64618f55c6b84e5418ed Mon Sep 17 00:00:00 2001 From: kathryntanardy Date: Wed, 13 May 2026 21:04:47 -0700 Subject: [PATCH] Added 409 response. --- src/elections/urls.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/elections/urls.py b/src/elections/urls.py index 9ebe0cd..b33637c 100644 --- a/src/elections/urls.py +++ b/src/elections/urls.py @@ -275,15 +275,25 @@ async def update_election( "/{election_name}", description="Deletes an election from the database. Returns whether the election exists after deletion.", response_model=SuccessResponse, - responses={401: {"description": "Need to be logged in as an admin.", "model": DetailModel}}, + responses={ + 401: {"description": "Need to be logged in as an admin.", "model": DetailModel}, + 409: {"description": "Election is still referenced by nominee applications.", "model": DetailModel} + }, operation_id="delete_election", dependencies=[Depends(perm_election)], ) async def delete_election(db_session: database.DBSession, election_name: str): slugified_name = slugify(election_name) + existing_applications = await candidates.crud.get_all_candidates_in_election(db_session, slugified_name) + if existing_applications: + raise HTTPException( + status_code=status.HTTP_409_CONFLICT, + detail=f"{election_name} is still referenced by nominee applications.", + ) + await elections.crud.delete_election(db_session, slugified_name) await db_session.commit() - + old_election = await elections.crud.get_election(db_session, slugified_name) return JSONResponse({"success": old_election is None})