From faeb656e2ababed373cfc3e793d4c2025d4c6207 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Mon, 21 Dec 2020 20:31:16 +0200 Subject: Convert user IDs to string to avoid JS bad behaviours --- backend/models/discord_user.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'backend/models/discord_user.py') diff --git a/backend/models/discord_user.py b/backend/models/discord_user.py index e835176..e61c7b3 100644 --- a/backend/models/discord_user.py +++ b/backend/models/discord_user.py @@ -1,14 +1,16 @@ import typing as t -from pydantic import BaseModel +from pydantic import BaseModel, 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 + # Discord default fields. username: str + # Store ID as str not as int because JavaScript + # doesn't work correctly with big ints. + id: str discriminator: str avatar: t.Optional[str] bot: t.Optional[bool] @@ -22,3 +24,11 @@ class DiscordUser(BaseModel): # Custom fields admin: bool + + @validator("id", pre=True) + def validate_id(cls, value: t.Any) -> t.Any: + """When ID is integer, convert it to string.""" + if isinstance(value, int): + return str(value) + + return value -- cgit v1.2.3 From d0e19ef96bdbc6a8e52405ff82e1864dbca52459 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Mon, 21 Dec 2020 21:05:15 +0200 Subject: Remove unnecessary comment about ID Co-authored-by: Joe Banks --- backend/models/discord_user.py | 2 -- 1 file changed, 2 deletions(-) (limited to 'backend/models/discord_user.py') diff --git a/backend/models/discord_user.py b/backend/models/discord_user.py index e61c7b3..296bb65 100644 --- a/backend/models/discord_user.py +++ b/backend/models/discord_user.py @@ -8,8 +8,6 @@ class DiscordUser(BaseModel): # Discord default fields. username: str - # Store ID as str not as int because JavaScript - # doesn't work correctly with big ints. id: str discriminator: str avatar: t.Optional[str] -- cgit v1.2.3 From cee239bb3c45895a262e21f58ebaf9394f91eff8 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Mon, 21 Dec 2020 21:05:54 +0200 Subject: Remove unnecessary validator Co-authored-by: Joe Banks --- backend/models/discord_user.py | 8 -------- 1 file changed, 8 deletions(-) (limited to 'backend/models/discord_user.py') diff --git a/backend/models/discord_user.py b/backend/models/discord_user.py index 296bb65..e02f6ca 100644 --- a/backend/models/discord_user.py +++ b/backend/models/discord_user.py @@ -22,11 +22,3 @@ class DiscordUser(BaseModel): # Custom fields admin: bool - - @validator("id", pre=True) - def validate_id(cls, value: t.Any) -> t.Any: - """When ID is integer, convert it to string.""" - if isinstance(value, int): - return str(value) - - return value -- cgit v1.2.3 From 60388a8b478d456755061a894c3710cd1e43c216 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Mon, 21 Dec 2020 21:06:17 +0200 Subject: Remove validator import Co-authored-by: Joe Banks --- backend/models/discord_user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend/models/discord_user.py') diff --git a/backend/models/discord_user.py b/backend/models/discord_user.py index e02f6ca..9f246ba 100644 --- a/backend/models/discord_user.py +++ b/backend/models/discord_user.py @@ -1,6 +1,6 @@ import typing as t -from pydantic import BaseModel, validator +from pydantic import BaseModel class DiscordUser(BaseModel): -- cgit v1.2.3