aboutsummaryrefslogtreecommitdiffstats
path: root/backend/models
diff options
context:
space:
mode:
authorGravatar ks129 <[email protected]>2020-12-08 10:41:04 +0200
committerGravatar ks129 <[email protected]>2020-12-08 10:41:04 +0200
commitbc68d2f7363d81c3a36f4c5641377dd4d024a932 (patch)
treece7ca73e07db50a904a07d49755804ff0942d3bb /backend/models
parentCreate Pydantic model for form response antispam data (diff)
Create DiscordUser Pydantic model for form response
Diffstat (limited to 'backend/models')
-rw-r--r--backend/models/discord_user.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/backend/models/discord_user.py b/backend/models/discord_user.py
new file mode 100644
index 0000000..99d6248
--- /dev/null
+++ b/backend/models/discord_user.py
@@ -0,0 +1,33 @@
+import typing as t
+
+from pydantic import BaseModel, root_validator
+
+
+class DiscordUser(BaseModel):
+ """Schema model of Discord user for form response."""
+
+ # Discord default fields
+ id: int # This is actually snowflake, but we simplify it here
+ username: str
+ discriminator: str
+ avatar: t.Optional[str]
+ bot: t.Optional[bool]
+ system: t.Optional[bool]
+ locale: t.Optional[str]
+ verified: t.Optional[bool]
+ email: t.Optional[str]
+ flags: t.Optional[int]
+ premium_type: t.Optional[int]
+ public_flags: t.Optional[int]
+
+ # Custom fields
+ admin: bool
+
+ @root_validator
+ def validate_data(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]:
+ """Validates email data when email collection is required."""
+ if values.get("require_email", False) is True:
+ if values.get("email") is None or values.get("verified") is None:
+ raise ValueError("Email information about user is required.")
+
+ return values