Skip to content

Commit fe4f952

Browse files
committed
wip: add DELETE nominee_info
1 parent 0aac1d1 commit fe4f952

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/nominees/crud.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,13 @@ async def update_nominee_info(
4141
.where(NomineeInfo.computing_id == info.computing_id)
4242
.values(info.to_update_dict())
4343
)
44+
45+
async def delete_nominee_info(
46+
db_session: AsyncSession,
47+
computing_id: str,
48+
):
49+
await db_session.execute(
50+
sqlalchemy
51+
.delete(NomineeInfo)
52+
.where(NomineeInfo.computing_id == computing_id)
53+
)

src/nominees/urls.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
NomineeInfoUpdateParams,
99
)
1010
from nominees.tables import NomineeInfo
11-
from utils.shared_models import DetailModel
11+
from utils.shared_models import DetailModel, SuccessResponse
1212
from utils.urls import AdminTypeEnum, admin_or_raise
1313

1414
router = APIRouter(
@@ -82,6 +82,17 @@ async def get_nominee_info(request: Request, db_session: database.DBSession, com
8282
return JSONResponse(nominee_info.serialize())
8383

8484

85+
@router.delete(
86+
"/{computing_id:str}",
87+
description="Nominee info is always publically tied to election, so be careful!",
88+
operation_id="delete_nominee",
89+
)
90+
async def delete_nominee_info(request: Request, db_session: database.DBSession, computing_id: str):
91+
await admin_or_raise(request, db_session)
92+
await nominees.crud.delete_nominee_info(db_session, computing_id)
93+
await db_session.commit()
94+
95+
8596
@router.patch(
8697
"/{computing_id:str}",
8798
description="Will create or update nominee info. Returns an updated copy of their nominee info.",

0 commit comments

Comments
 (0)