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 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