diff options
| author | 2020-12-24 08:09:53 +0200 | |
|---|---|---|
| committer | 2020-12-24 08:09:53 +0200 | |
| commit | d30ac683746ecf92267884c2fc1ae654a7203dd4 (patch) | |
| tree | df122bfa13147cb603e0eb626849dd5dde38273a /backend/routes | |
| parent | Create route for adding new admins (diff) | |
Use Pydantic validation instead manual validation
Diffstat (limited to 'backend/routes')
| -rw-r--r-- | backend/routes/admin.py | 11 | 
1 files changed, 8 insertions, 3 deletions
| diff --git a/backend/routes/admin.py b/backend/routes/admin.py index ef01fbd..08e97ce 100644 --- a/backend/routes/admin.py +++ b/backend/routes/admin.py @@ -1,6 +1,7 @@  """  Adds new admin user.  """ +from pydantic import BaseModel, Field  from spectree import Response  from starlette.authentication import requires  from starlette.requests import Request @@ -10,6 +11,10 @@ from backend.route import Route  from backend.validation import ErrorMessage, OkayResponse, api +class AdminModel(BaseModel): +    id: str = Field(alias="_id") + +  class AdminRoute(Route):      """Adds new admin user.""" @@ -18,14 +23,14 @@ class AdminRoute(Route):      @requires(["authenticated", "admin"])      @api.validate( +        json=AdminModel,          resp=Response(HTTP_200=OkayResponse, HTTP_400=ErrorMessage),          tags=["admin"]      )      async def post(self, request: Request) -> JSONResponse:          """Inserts new administrator user to DB."""          data = await request.json() -        if "id" not in data: -            return JSONResponse({"error": "missing_id"}, status_code=400) +        admin = AdminModel(**data) -        await request.state.db.admins.insert_one({"_id": str(data["id"])}) +        await request.state.db.admins.insert_one(admin.dict(by_alias=True))          return JSONResponse({"status": "ok"}) | 
