diff options
author | 2020-12-13 20:52:14 +0200 | |
---|---|---|
committer | 2020-12-13 20:52:14 +0200 | |
commit | efdf72f299da0040989c1ae8aec9ac97262cb28d (patch) | |
tree | 8c7f0dbf05bbdba80b4fe24f5e751e48775be293 | |
parent | Simplify dict function (diff) |
Move form creation to index file
-rw-r--r-- | backend/routes/forms/index.py | 19 | ||||
-rw-r--r-- | backend/routes/forms/new.py | 35 |
2 files changed, 18 insertions, 36 deletions
diff --git a/backend/routes/forms/index.py b/backend/routes/forms/index.py index f1df210..5cc6837 100644 --- a/backend/routes/forms/index.py +++ b/backend/routes/forms/index.py @@ -1,6 +1,7 @@ """ Return a list of all forms to authenticated users. """ +from pydantic import ValidationError from starlette.authentication import requires from starlette.requests import Request from starlette.responses import JSONResponse @@ -14,7 +15,7 @@ class FormsList(Route): List all available forms for administrator viewing. """ - name = "forms_list" + name = "forms_list_create" path = "/" @requires(["authenticated", "admin"]) @@ -31,3 +32,19 @@ class FormsList(Route): return JSONResponse( forms ) + + @requires(["authenticated", "admin"]) + async def post(self, request: Request) -> JSONResponse: + form_data = await request.json() + try: + form = Form(**form_data) + except ValidationError as e: + return JSONResponse(e.errors()) + + if await request.state.db.forms.find_one({"_id": form.id}): + return JSONResponse({ + "error": "Form with same ID already exists." + }, status_code=400) + + await request.state.db.forms.insert_one(form.dict(by_alias=True)) + return JSONResponse(form.dict()) diff --git a/backend/routes/forms/new.py b/backend/routes/forms/new.py deleted file mode 100644 index 0144074..0000000 --- a/backend/routes/forms/new.py +++ /dev/null @@ -1,35 +0,0 @@ -""" -Creates new form based on data provided. -""" -from pydantic import ValidationError -from starlette.authentication import requires -from starlette.requests import Request -from starlette.responses import JSONResponse - -from backend.models import Form -from backend.route import Route - - -class FormCreate(Route): - """ - Creates new form from JSON data. - """ - - name = "forms_create" - path = "/" - - @requires(["authenticated", "admin"]) - async def post(self, request: Request) -> JSONResponse: - form_data = await request.json() - try: - form = Form(**form_data) - except ValidationError as e: - return JSONResponse(e.errors()) - - if await request.state.db.forms.find_one({"_id": form.id}): - return JSONResponse({ - "error": "Form with same ID already exists." - }, status_code=400) - - await request.state.db.forms.insert_one(form.dict(by_alias=True)) - return JSONResponse(form.dict()) |