From 97879ae2e38944f676e3038c7935db05c89de8de Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Wed, 16 Dec 2020 19:07:46 +0200 Subject: Add DELETE method to response route for form response deleting --- backend/routes/forms/response.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'backend/routes/forms/response.py') diff --git a/backend/routes/forms/response.py b/backend/routes/forms/response.py index 2208c70..acaa647 100644 --- a/backend/routes/forms/response.py +++ b/backend/routes/forms/response.py @@ -1,5 +1,5 @@ """ -Returns single from response by ID. +Returns or deletes form response by ID. """ from starlette.authentication import requires from starlette.requests import Request @@ -10,7 +10,7 @@ from backend.route import Route class Response(Route): - """Get single form response by ID.""" + """Get or delete single form response by ID.""" name = "response" path = "/{form_id:str}/responses/{response_id:str}" @@ -28,3 +28,19 @@ class Response(Route): return JSONResponse(response.dict()) else: return JSONResponse({"error": "not_found"}, status_code=404) + + @requires(["authenticated", "admin"]) + async def delete(self, request: Request) -> JSONResponse: + """Deletes form response by ID.""" + if not await request.state.db.responses.find_one( + { + "_id": request.path_params["response_id"], + "form_id": request.path_params["form_id"] + } + ): + return JSONResponse({"error": "not_found"}, status_code=404) + + await request.state.db.responses.delete_one( + {"_id": request.path_params["response_id"]} + ) + return JSONResponse({"status": "ok"}) -- cgit v1.2.3