From 79211eb48937e2290858768b986f2f307b988df2 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Wed, 16 Dec 2020 08:40:48 +0200 Subject: Add DELETE method for form endpoint --- backend/routes/forms/form.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'backend') 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) -- cgit v1.2.3 From 1a6d0b5ca94fa1542415ee6217e9df8c82f68433 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Wed, 16 Dec 2020 12:43:56 +0200 Subject: Fix grammar Co-authored-by: Joe Banks --- backend/routes/forms/form.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'backend') diff --git a/backend/routes/forms/form.py b/backend/routes/forms/form.py index d64a08e..b3d0ce9 100644 --- a/backend/routes/forms/form.py +++ b/backend/routes/forms/form.py @@ -1,5 +1,5 @@ """ -Returns or deletes single form information by ID. +Returns or deletes a single form given an ID. """ from starlette.authentication import requires from starlette.requests import Request @@ -11,7 +11,7 @@ from backend.models import Form class SingleForm(Route): """ - Returns or deletes single form information by ID. + Returns or deletes a single form given an ID. Returns all fields for admins, otherwise only public fields. """ -- cgit v1.2.3 From 0de49d4ee7b096564172bb78f32cbdc45b4dad2b Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Wed, 16 Dec 2020 12:45:42 +0200 Subject: Return some JSON from delete endpoint --- backend/routes/forms/form.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend') diff --git a/backend/routes/forms/form.py b/backend/routes/forms/form.py index b3d0ce9..f349b08 100644 --- a/backend/routes/forms/form.py +++ b/backend/routes/forms/form.py @@ -51,4 +51,4 @@ class SingleForm(Route): {"form_id": request.path_params["form_id"]} ) - return JSONResponse(status_code=204) + return JSONResponse({"status": "ok"} status_code=200) -- cgit v1.2.3 From ac60a8148a8b3e8453befd4088d81406df12832e Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Wed, 16 Dec 2020 12:49:41 +0200 Subject: Add missing comma --- backend/routes/forms/form.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend') diff --git a/backend/routes/forms/form.py b/backend/routes/forms/form.py index f349b08..0c384f8 100644 --- a/backend/routes/forms/form.py +++ b/backend/routes/forms/form.py @@ -51,4 +51,4 @@ class SingleForm(Route): {"form_id": request.path_params["form_id"]} ) - return JSONResponse({"status": "ok"} status_code=200) + return JSONResponse({"status": "ok"}, status_code=200) -- cgit v1.2.3 From c4a2a3c6100becbedd507cc7a867fb08e7437291 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Wed, 16 Dec 2020 14:15:45 +0200 Subject: Remove unnecessary status code Co-authored-by: Joe Banks --- backend/routes/forms/form.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend') diff --git a/backend/routes/forms/form.py b/backend/routes/forms/form.py index 0c384f8..8fdd8a2 100644 --- a/backend/routes/forms/form.py +++ b/backend/routes/forms/form.py @@ -51,4 +51,4 @@ class SingleForm(Route): {"form_id": request.path_params["form_id"]} ) - return JSONResponse({"status": "ok"}, status_code=200) + return JSONResponse({"status": "ok"}) -- cgit v1.2.3