diff options
author | 2020-12-16 19:07:46 +0200 | |
---|---|---|
committer | 2020-12-16 19:07:46 +0200 | |
commit | 97879ae2e38944f676e3038c7935db05c89de8de (patch) | |
tree | fd102bfa791179bac40ab191cd4da7f2ee763438 | |
parent | Merge pull request #35 from python-discord/sebastiaan/ci/status-embed (diff) |
Add DELETE method to response route for form response deleting
-rw-r--r-- | backend/routes/forms/response.py | 20 |
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"}) |