From 1270adfaf2225faaf2134e2a5de088d121c52a04 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Sun, 13 Dec 2020 14:19:41 +0200 Subject: Create route for showing single form response --- backend/routes/forms/response.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 backend/routes/forms/response.py (limited to 'backend/routes/forms/response.py') diff --git a/backend/routes/forms/response.py b/backend/routes/forms/response.py new file mode 100644 index 0000000..4466c21 --- /dev/null +++ b/backend/routes/forms/response.py @@ -0,0 +1,27 @@ +""" +Returns single from response by ID. +""" +from starlette.authentication import requires +from starlette.requests import Request +from starlette.responses import JSONResponse + +from backend.models import FormResponse +from backend.route import Route + + +class Response(Route): + """Get single form response by ID.""" + + name = "response" + path = "/responses/{response_id:str}" + + @requires(["authenticated", "admin"]) + async def get(self, request: Request) -> JSONResponse: + """Returns single form response by ID.""" + if raw_response := await request.state.db.responses.find_one( + {"_id": request.path_params["response_id"]} + ): + response = FormResponse(**raw_response) + return JSONResponse(response.dict()) + else: + return JSONResponse({"error": "not_found"}, status_code=404) -- cgit v1.2.3 From d8d3052a72f2c3c32a3859749eb465fc3fe3570e Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Mon, 14 Dec 2020 13:58:20 +0200 Subject: Restructure single response route --- backend/routes/forms/response.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'backend/routes/forms/response.py') diff --git a/backend/routes/forms/response.py b/backend/routes/forms/response.py index 4466c21..2208c70 100644 --- a/backend/routes/forms/response.py +++ b/backend/routes/forms/response.py @@ -13,13 +13,16 @@ class Response(Route): """Get single form response by ID.""" name = "response" - path = "/responses/{response_id:str}" + path = "/{form_id:str}/responses/{response_id:str}" @requires(["authenticated", "admin"]) async def get(self, request: Request) -> JSONResponse: """Returns single form response by ID.""" if raw_response := await request.state.db.responses.find_one( - {"_id": request.path_params["response_id"]} + { + "_id": request.path_params["response_id"], + "form_id": request.path_params["form_id"] + } ): response = FormResponse(**raw_response) return JSONResponse(response.dict()) -- cgit v1.2.3