aboutsummaryrefslogtreecommitdiffstats
path: root/backend/routes/forms/response.py
diff options
context:
space:
mode:
authorGravatar ks129 <[email protected]>2020-12-16 19:07:46 +0200
committerGravatar ks129 <[email protected]>2020-12-16 19:07:46 +0200
commit97879ae2e38944f676e3038c7935db05c89de8de (patch)
treefd102bfa791179bac40ab191cd4da7f2ee763438 /backend/routes/forms/response.py
parentMerge pull request #35 from python-discord/sebastiaan/ci/status-embed (diff)
Add DELETE method to response route for form response deleting
Diffstat (limited to 'backend/routes/forms/response.py')
-rw-r--r--backend/routes/forms/response.py20
1 files changed, 18 insertions, 2 deletions
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"})