1
1
from enum import Enum
2
+ from logging import log
2
3
from typing import List , Optional , Dict
3
4
4
5
from pydantic import BaseModel , model_serializer , field_serializer , field_validator
@@ -17,7 +18,7 @@ class CreatePostAddonRequest(BaseModel):
17
18
18
19
@field_serializer ("widgets" )
19
20
def serialize_widgets (self , widgets , _info ):
20
- return { "widget_list" : [w .serialize_model () for w in widgets ]}
21
+ return [w .serialize_model () for w in widgets ]
21
22
22
23
23
24
class CreatePostAddonResponse (BaseModel ):
@@ -47,7 +48,7 @@ class App(BaseModel):
47
48
display : str = None
48
49
avatar : str = None
49
50
status : Status = None
50
- service_type : str
51
+ service_type : str = None
51
52
52
53
53
54
class AddonMetaData (BaseModel ):
@@ -64,27 +65,16 @@ class PostAddon(BaseModel):
64
65
65
66
token : str
66
67
67
- widgets : List [WidgetTypesUnion ] = None
68
-
69
68
score : int
70
69
71
70
semantic : Dict [str , str ] = None
72
71
semantic_sensitives : List [str ] = None
73
72
74
- @field_validator ("widgets" , mode = "before" )
75
- @classmethod
76
- def deserialize_model (cls , widgets : Dict ):
77
- widget_list = widgets .get ("widget_list" , [])
78
- return [
79
- get_widget_class (w ["widget_type" ]).deserialize_model (w ) for w in widget_list
80
- ]
73
+ class Config :
74
+ exclude = {"semantic_sensitives" }
81
75
82
- @field_serializer ("widgets" )
83
- def serialize_widgets (self , widgets , _info ):
84
- if widgets :
85
- p = [w .serialize_model () for w in widgets ]
86
- return {"widget_list" : p }
87
- return None
76
+
77
+
88
78
89
79
90
80
class GetPostAddonsRequest (BaseModel ):
@@ -121,11 +111,23 @@ class CreateUserAddonRequest(BaseModel):
121
111
categories : List [str ]
122
112
ticket_uuid : Optional [str ] = None
123
113
verification_cost : Optional [int ] = None
114
+ cost : Optional [int ] = None
115
+
116
+ @field_validator ("cost" , mode = "before" )
117
+ @classmethod
118
+ def set_cost_from_verification (cls , cost : Optional [int ], values ):
119
+ if cost is None and values .get ("verification_cost" ) is not None :
120
+ return values .get ("verification_cost" )
121
+ return cost
122
+
123
+ class Config :
124
+ exclude = {"verification_cost" , "management_permalink" ,
125
+ "notes" , "removal_permalink" , "semantic_sensitives" }
124
126
125
127
@field_serializer ("widgets" )
126
128
def serialize_widgets (self , widgets , _info ):
127
129
p = [w .serialize_model () for w in widgets ]
128
- return { "widget_list" : p }
130
+ return p
129
131
130
132
131
133
class CreateUserAddonResponse (BaseModel ):
@@ -160,16 +162,15 @@ class UserAddon(BaseModel):
160
162
@field_validator ("widgets" , mode = "before" )
161
163
@classmethod
162
164
def deserialize_model (cls , widgets : Dict ):
163
- widget_list = widgets .get ("widget_list" , [])
164
165
return [
165
- get_widget_class (w [ "widget_type" ]) .deserialize_model (w ) for w in widget_list
166
+ get_widget_class (w . keys ()) .deserialize_model (w ) for w in widgets
166
167
]
167
168
168
169
@field_serializer ("widgets" )
169
170
def serialize_widgets (self , widgets , _info ):
170
171
if widgets :
171
172
p = [w .serialize_model () for w in widgets ]
172
- return { "widget_list" : p }
173
+ return p
173
174
return None
174
175
175
176
0 commit comments