aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Joe Banks <[email protected]>2020-12-14 17:53:52 +0000
committerGravatar GitHub <[email protected]>2020-12-14 17:53:52 +0000
commitff5be5da7e05aa7513d723121bc47acaa5ce03ba (patch)
treef76bc6827a0fb9286414627d1537740a532e2de4
parentMerge pull request #25 from python-discord/bugfix/route-collision (diff)
parentMerge branch 'main' into ks123/single-response-route (diff)
Merge pull request #22 from python-discord/ks123/single-response-route
-rw-r--r--backend/routes/forms/response.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/backend/routes/forms/response.py b/backend/routes/forms/response.py
new file mode 100644
index 0000000..2208c70
--- /dev/null
+++ b/backend/routes/forms/response.py
@@ -0,0 +1,30 @@
+"""
+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 = "/{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"],
+ "form_id": request.path_params["form_id"]
+ }
+ ):
+ response = FormResponse(**raw_response)
+ return JSONResponse(response.dict())
+ else:
+ return JSONResponse({"error": "not_found"}, status_code=404)