From 53b3bebeca248e115f2d0e73e913aa34d224c2d3 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Mon, 30 Nov 2020 20:26:01 +0200 Subject: Create form object model --- backend/models/form.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 backend/models/form.py (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py new file mode 100644 index 0000000..6e1a9ab --- /dev/null +++ b/backend/models/form.py @@ -0,0 +1,25 @@ +import typing as t + +from pydantic import BaseModel, Field, validator + +from backend.constants import FormFeatures +from backend.models import Question +from backend.models.types import ObjectId + + +class Form(BaseModel): + """Schema model for form.""" + + id: ObjectId = Field(alias="_id") + features: t.List[str] + questions: t.List[Question] + + @validator("features") + def validate_features(self, value: t.List[str]) -> t.Optional[t.List[str]]: + """Validates is all features in allowed list.""" + # Uppercase everything to avoid mixed case in DB + value = [v.upper() for v in value] + if not all(v in FormFeatures.__members__.values() for v in value): + raise ValueError("Form features list contains one or more invalid values.") + + return value -- cgit v1.2.3