diff options
author | 2020-12-02 15:24:43 +0200 | |
---|---|---|
committer | 2020-12-02 15:24:43 +0200 | |
commit | ac1000cb101e69a44e69e3e7a4fbdeb595aa0e83 (patch) | |
tree | c14e3fb1fde284f3be71d9eedf2f5c63fad6b30e /backend/routes/forms/new.py | |
parent | Move data to Form and then back to dictionary for id converting (diff) |
Create route for creating new forms
Diffstat (limited to 'backend/routes/forms/new.py')
-rw-r--r-- | backend/routes/forms/new.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/backend/routes/forms/new.py b/backend/routes/forms/new.py new file mode 100644 index 0000000..ff39f12 --- /dev/null +++ b/backend/routes/forms/new.py @@ -0,0 +1,30 @@ +""" +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 = "/new" + + @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()) + + await request.state.db.forms.insert_one(form.dict(by_alias=True)) + return JSONResponse(form.dict()) |