1
1
"""Base classes for configuration classes"""
2
2
3
3
import datetime
4
- from typing import Annotated , Union , Optional
5
- from pydantic import BaseModel , Field , PastDate
4
+ from typing import Annotated , Union , Optional , Any
5
+
6
+ import pydantic .types
7
+ from pydantic import BaseModel , Field , PastDate , validator , field_validator
6
8
7
9
8
10
class SettingsBase (BaseModel ):
@@ -14,7 +16,7 @@ class SettingsBase(BaseModel):
14
16
),
15
17
] = datetime .date .today ()
16
18
17
- save_date : Annotated [
19
+ save_datetime : Annotated [
18
20
Optional [
19
21
Union [datetime .datetime , PastDate ]
20
22
], # Optional, but can be either type
@@ -35,6 +37,24 @@ class SettingsBase(BaseModel):
35
37
),
36
38
] = "BpodUser"
37
39
40
+ # noinspection PyNestedDecorators
41
+ @field_validator ("creation_date" , mode = "after" )
42
+ @classmethod
43
+ def validate_nonfuture (cls , value : datetime .date ) -> datetime .date :
44
+ if value > datetime .date .today ():
45
+ raise ValueError (f'Provided creation_date { value } cannot be in the future!' )
46
+ return value
47
+
48
+ # noinspection PyNestedDecorators
49
+ @field_validator ("save_datetime" , mode = "after" )
50
+ @classmethod
51
+ def validate_nonfuture_datetime (cls , value : datetime .datetime ) -> datetime .datetime :
52
+ if value > datetime .datetime .now ():
53
+ raise ValueError (f'Provided save_datetime { value } cannot be in the future!' )
54
+ return value
55
+
56
+
57
+
38
58
39
59
class ModuleBase (SettingsBase ):
40
60
name : Annotated [
0 commit comments