77from pydantic import conlist
88from pydantic import constr
99from pydantic import EmailStr
10- from pydantic import Field
1110from pydantic import Extra
11+ from pydantic import Field
1212from pydantic import validator
1313from pydantic .errors import EnumMemberError
1414
@@ -26,9 +26,10 @@ def enum_error_handling(self) -> str:
2626
2727DATE_REGEX = r"\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d{3})Z"
2828
29+ DATE_TIME_FORMAT_ERROR_MESSAGE = "Expected format: YYYY-mm-ddTHH:MM:SS.055Z"
2930
30- class BaseModel (PyDanticBaseModel ):
3131
32+ class BaseModel (PyDanticBaseModel ):
3233 class Config :
3334 extra = Extra .allow
3435 use_enum_values = True
@@ -106,6 +107,26 @@ class TimedBaseModel(BaseModel):
106107 created_at : constr (regex = DATE_REGEX ) = Field (None , alias = "createdAt" )
107108 updated_at : constr (regex = DATE_REGEX ) = Field (None , alias = "updatedAt" )
108109
110+ @validator ("created_at" , pre = True )
111+ def validate_created_at (cls , value ):
112+ from pydantic import StrRegexError
113+
114+ try :
115+ constr (regex = DATE_REGEX ).validate (value )
116+ except StrRegexError :
117+ raise TypeError (DATE_TIME_FORMAT_ERROR_MESSAGE )
118+ return value
119+
120+ @validator ("updated_at" , pre = True )
121+ def validate_updated_at (cls , value ):
122+ from pydantic import StrRegexError
123+
124+ try :
125+ constr (regex = DATE_REGEX ).validate (value )
126+ except StrRegexError :
127+ raise TypeError (DATE_TIME_FORMAT_ERROR_MESSAGE )
128+ return value
129+
109130
110131class UserAction (BaseModel ):
111132 email : EmailStr
0 commit comments