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"}) | 
