diff options
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/routes/forms/form.py | 22 | 
1 files changed, 20 insertions, 2 deletions
| diff --git a/backend/routes/forms/form.py b/backend/routes/forms/form.py index 599632e..d64a08e 100644 --- a/backend/routes/forms/form.py +++ b/backend/routes/forms/form.py @@ -1,6 +1,7 @@  """ -Returns single form information by ID. +Returns or deletes single form information by ID.  """ +from starlette.authentication import requires  from starlette.requests import Request  from starlette.responses import JSONResponse @@ -10,7 +11,7 @@ from backend.models import Form  class SingleForm(Route):      """ -    Returns single form information by ID. +    Returns or deletes single form information by ID.      Returns all fields for admins, otherwise only public fields.      """ @@ -34,3 +35,20 @@ class SingleForm(Route):              return JSONResponse(form.dict(admin=admin))          return JSONResponse({"error": "not_found"}, status_code=404) + +    @requires(["authenticated", "admin"]) +    async def delete(self, request: Request) -> JSONResponse: +        """Deletes form by ID.""" +        if not await request.state.db.forms.find_one( +            {"_id": request.path_params["form_id"]} +        ): +            return JSONResponse({"error": "not_found"}, status_code=404) + +        await request.state.db.forms.delete_one( +            {"_id": request.path_params["form_id"]} +        ) +        await request.state.db.responses.delete_many( +            {"form_id": request.path_params["form_id"]} +        ) + +        return JSONResponse(status_code=204) | 
