diff options
author | 2020-12-17 09:25:03 +0200 | |
---|---|---|
committer | 2020-12-17 09:25:03 +0200 | |
commit | 4cefde0421715d79461ffc3ca970b7b26d7f2131 (patch) | |
tree | 7fa8e7a118499d7020a80ff5074253a1973af488 /backend/models | |
parent | Enable docs and load protection middleware (diff) | |
parent | Merge pull request #38 from python-discord/submission-timestamp (diff) |
Merge branch 'main' into docs/api-spec
Diffstat (limited to 'backend/models')
-rw-r--r-- | backend/models/form_response.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/backend/models/form_response.py b/backend/models/form_response.py index 8bc69e4..933f5e4 100644 --- a/backend/models/form_response.py +++ b/backend/models/form_response.py @@ -1,6 +1,7 @@ +import datetime import typing as t -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, validator from .antispam import AntiSpam from .discord_user import DiscordUser @@ -14,6 +15,18 @@ class FormResponse(BaseModel): antispam: t.Optional[AntiSpam] response: dict[str, t.Any] form_id: str + timestamp: str + + @validator("timestamp", pre=True) + def set_timestamp(cls, iso_string: t.Optional[str]) -> t.Optional[str]: + if iso_string is None: + return datetime.datetime.now(tz=datetime.timezone.utc).isoformat() + + elif not isinstance(iso_string, str): + raise ValueError("Submission timestamp must be a string.") + + # Convert to datetime and back to ensure string is valid + return datetime.datetime.fromisoformat(iso_string).isoformat() class Config: allow_population_by_field_name = True |