diff options
author | 2020-12-29 18:54:25 +0200 | |
---|---|---|
committer | 2020-12-29 18:54:25 +0200 | |
commit | 085dc8c536a5968342d9632b3adb57ef4cd1d5bc (patch) | |
tree | 05ec54ce45f808ab2aad7568bdaa928e6a90fef9 | |
parent | Add PyDis guild constant from environment (diff) |
Add validator for Discord role field for form
-rw-r--r-- | backend/models/form.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/backend/models/form.py b/backend/models/form.py index 64b198b..5aacc8b 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -1,7 +1,7 @@ import typing as t import httpx -from pydantic import BaseModel, Field, validator +from pydantic import BaseModel, Field, root_validator, validator from pydantic.error_wrappers import ErrorWrapper, ValidationError from backend.constants import FormFeatures, WebHook @@ -52,6 +52,16 @@ class Form(BaseModel): return value + @root_validator + def validate_role(cls, values: dict[str, t.Any]) -> t.Optional[dict[str, t.Any]]: + """Validates does Discord role provided when flag provided.""" + if FormFeatures.ASSIGN_ROLE.value in values.get("features", []) and not values.get("discord_role"): # noqa + raise ValueError( + "discord_role field is required when ASSIGN_ROLE flag provided." + ) + + return values + def dict(self, admin: bool = True, **kwargs: t.Any) -> dict[str, t.Any]: """Wrapper for original function to exclude private data for public access.""" data = super().dict(**kwargs) |