Skip to content

Commit d4a2fde

Browse files
committed
wip: add DELETE nominee_info
1 parent e4035bd commit d4a2fde

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-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: 15 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 admin_or_raise
1313

1414
router = APIRouter(
@@ -95,6 +95,20 @@ async def get_nominee_info(
9595

9696
return JSONResponse(nominee_info.serialize())
9797

98+
@router.delete(
99+
"/{computing_id:str}",
100+
description="Nominee info is always publically tied to election, so be careful!",
101+
operation_id="delete_nominee"
102+
)
103+
async def delete_nominee_info(
104+
request: Request,
105+
db_session: database.DBSession,
106+
computing_id: str
107+
):
108+
await admin_or_raise(request, db_session)
109+
await nominees.crud.delete_nominee_info(db_session, computing_id)
110+
await db_session.commit()
111+
98112
@router.patch(
99113
"/{computing_id:str}",
100114
description="Will create or update nominee info. Returns an updated copy of their nominee info.",

0 commit comments

Comments
 (0)