diff options
author | 2020-12-14 17:55:26 +0000 | |
---|---|---|
committer | 2020-12-14 17:55:26 +0000 | |
commit | c453953521c3c2aa85f20118f03852da0d88f09c (patch) | |
tree | 0256f6c39d4797b2e90d9effee3c1033fb642bf2 | |
parent | Merge pull request #22 from python-discord/ks123/single-response-route (diff) | |
parent | Merge branch 'main' into ks123/responses-route (diff) |
Merge pull request #26 from python-discord/ks123/responses-route
-rw-r--r-- | backend/routes/forms/responses.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/backend/routes/forms/responses.py b/backend/routes/forms/responses.py new file mode 100644 index 0000000..ee8ab84 --- /dev/null +++ b/backend/routes/forms/responses.py @@ -0,0 +1,34 @@ +""" +Returns all form responses by form 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 Responses(Route): + """ + Returns all form responses by form ID. + """ + + name = "form_responses" + path = "/{form_id:str}/responses" + + @requires(["authenticated", "admin"]) + async def get(self, request: Request) -> JSONResponse: + """Returns all form responses by form ID.""" + if not await request.state.db.forms.find_one( + {"_id": request.path_params["form_id"]} + ): + return JSONResponse({"error": "not_found"}, 404) + + cursor = request.state.db.responses.find( + {"form_id": request.path_params["form_id"]} + ) + responses = [ + FormResponse(**response) for response in await cursor.to_list(None) + ] + return JSONResponse([response.dict() for response in responses]) |