@@ -34,9 +34,9 @@ def __init__(cls, name, bases, d):
34
34
for _ in bases :
35
35
for action in actions :
36
36
for name , fallbacks in schema_names .items ():
37
- name = f"{ name } _schema " .format (action = action )
37
+ name = f"{ name } _schema_cls " .format (action = action )
38
38
fallbacks = [
39
- f"{ fallback } _schema " .format (action = action )
39
+ f"{ fallback } _schema_cls " .format (action = action )
40
40
for fallback in fallbacks
41
41
]
42
42
attr = getattr_fallback (cls , name , * fallbacks )
@@ -45,9 +45,9 @@ def __init__(cls, name, bases, d):
45
45
46
46
47
47
class BaseView (flask .views .View , metaclass = BaseViewType ):
48
- kwargs_schema = None
49
- args_schema = None
50
- body_schema = None
48
+ kwargs_schema_cls = None
49
+ args_schema_cls = None
50
+ body_schema_cls = None
51
51
52
52
loaded_kwargs = None
53
53
loaded_args = None
@@ -65,15 +65,15 @@ def dispatch_request(self, *args, **kwargs):
65
65
raise ApiError (status_code = 400 , source = "body" ) from e
66
66
67
67
def load_kwargs_schema (self ):
68
- self .loaded_kwargs = self .kwargs_schema .load (data = flask .request .view_args )
68
+ self .loaded_kwargs = self .kwargs_schema_cls () .load (data = flask .request .view_args )
69
69
70
70
def load_args_schema (self ):
71
- self .loaded_args = self .args_schema .load (data = flask .request .args )
71
+ self .loaded_args = self .args_schema_cls () .load (data = flask .request .args )
72
72
73
- def handle_kwargs (self , schema ):
73
+ def handle_kwargs (self , schema_cls ):
74
74
try :
75
- if schema is not None :
76
- self .kwargs_schema = schema
75
+ if schema_cls is not None :
76
+ self .kwargs_schema_cls = schema_cls
77
77
self .load_kwargs_schema ()
78
78
except marshmallow .exceptions .ValidationError as e :
79
79
raise ApiError (status_code = 400 , source = "kwargs" ) from e
@@ -83,10 +83,10 @@ def handle_kwargs(self, schema):
83
83
):
84
84
raise ApiError (status_code = 404 )
85
85
86
- def handle_args (self , schema ):
86
+ def handle_args (self , schema_cls ):
87
87
try :
88
- if schema is not None :
89
- self .args_schema = schema
88
+ if schema_cls is not None :
89
+ self .args_schema_cls = schema_cls
90
90
self .load_args_schema ()
91
91
except marshmallow .exceptions .ValidationError as e :
92
92
raise ApiError (status_code = 400 , source = "args" ) from e
@@ -98,7 +98,7 @@ def handle_args(self, schema):
98
98
99
99
def get_schema_success_data (
100
100
self ,
101
- schema ,
101
+ schema_cls ,
102
102
data ,
103
103
status_code = 200 ,
104
104
data_wrapper = None ,
@@ -109,29 +109,29 @@ def noop_data_wrapper(x):
109
109
110
110
if data_wrapper is None :
111
111
data_wrapper = noop_data_wrapper
112
- if schema is not None :
112
+ if schema_cls is not None :
113
113
return (
114
- flask .jsonify (data_wrapper (schema .dump (data , many = many ))),
114
+ flask .jsonify (data_wrapper (schema_cls () .dump (data , many = many ))),
115
115
status_code ,
116
116
)
117
- elif schema is None and data is not None :
117
+ elif schema_cls is None and data is not None :
118
118
return flask .jsonify (data_wrapper (data )), status_code
119
119
else :
120
120
return "" , 204
121
121
122
122
123
123
class List (BaseView ):
124
- list_kwargs_schema = None
125
- list_args_schema = None
126
- list_body_schema = None
127
- list_response_body_schema = None
128
- response_body_schema = None
124
+ list_kwargs_schema_cls = None
125
+ list_args_schema_cls = None
126
+ list_body_schema_cls = None
127
+ list_response_body_schema_cls = None
128
+ response_body_schema_cls = None
129
129
130
130
instances = None
131
131
132
132
def handle_get (self , * args , ** kwargs ):
133
- self .handle_kwargs (self .list_kwargs_schema )
134
- self .handle_args (self .list_args_schema )
133
+ self .handle_kwargs (self .list_kwargs_schema_cls )
134
+ self .handle_args (self .list_args_schema_cls )
135
135
self .instances = self .get_instances ()
136
136
return self .get_list_response ()
137
137
@@ -140,25 +140,25 @@ def get_instances(self):
140
140
141
141
def get_list_response (self ):
142
142
return self .get_schema_success_data (
143
- schema = self .list_response_body_schema ,
143
+ schema_cls = self .list_response_body_schema_cls ,
144
144
data = self .instances ,
145
145
data_wrapper = lambda data : dict (items = data ),
146
146
many = True ,
147
147
)
148
148
149
149
150
150
class Read (BaseView ):
151
- read_kwargs_schema = None
152
- read_args_schema = None
153
- read_body_schema = None
154
- read_response_body_schema = None
155
- response_body_schema = None
151
+ read_kwargs_schema_cls = None
152
+ read_args_schema_cls = None
153
+ read_body_schema_cls = None
154
+ read_response_body_schema_cls = None
155
+ response_body_schema_cls = None
156
156
157
157
instance = None
158
158
159
159
def handle_get (self , * args , ** kwargs ):
160
- self .handle_kwargs (self .read_kwargs_schema )
161
- self .handle_args (self .read_args_schema )
160
+ self .handle_kwargs (self .read_kwargs_schema_cls )
161
+ self .handle_args (self .read_args_schema_cls )
162
162
self .instance = self .get_instance ()
163
163
return self .get_read_response ()
164
164
@@ -167,35 +167,37 @@ def get_instance(self):
167
167
168
168
def get_read_response (self ):
169
169
return self .get_schema_success_data (
170
- schema = self .read_response_body_schema ,
170
+ schema_cls = self .read_response_body_schema_cls ,
171
171
data = self .instance ,
172
172
)
173
173
174
174
175
175
class Create (BaseView ):
176
- create_kwargs_schema = None
177
- create_args_schema = None
178
- create_body_schema = None
179
- create_request_body_schema = None
180
- create_response_body_schema = None
181
- request_body_schema = None
182
- response_body_schema = None
176
+ create_kwargs_schema_cls = None
177
+ create_args_schema_cls = None
178
+ create_body_schema_cls = None
179
+ create_request_body_schema_cls = None
180
+ create_response_body_schema_cls = None
181
+ request_body_schema_cls = None
182
+ response_body_schema_cls = None
183
183
184
184
loaded_body = None
185
185
instance = None
186
186
187
187
def handle_post (self , * args , ** kwargs ):
188
- self .handle_kwargs (self .create_kwargs_schema )
189
- self .handle_args (self .create_args_schema )
190
- if self .create_request_body_schema is not None :
191
- self .body_schema = self .create_request_body_schema
188
+ self .handle_kwargs (self .create_kwargs_schema_cls )
189
+ self .handle_args (self .create_args_schema_cls )
190
+ if self .create_request_body_schema_cls is not None :
191
+ self .body_schema_cls = self .create_request_body_schema_cls
192
192
self .load_create_request_body_schema ()
193
193
self .instance = self .create ()
194
194
self .db .session .commit ()
195
195
return self .get_create_response ()
196
196
197
197
def load_create_request_body_schema (self ):
198
- self .loaded_body = self .create_request_body_schema .load (data = flask .request .json )
198
+ self .loaded_body = self .create_request_body_schema_cls ().load (
199
+ data = flask .request .json
200
+ )
199
201
200
202
def create (self ):
201
203
if is_sa_mapped (self .loaded_body ):
@@ -204,20 +206,20 @@ def create(self):
204
206
205
207
def get_create_response (self ):
206
208
return self .get_schema_success_data (
207
- schema = self .create_response_body_schema ,
209
+ schema_cls = self .create_response_body_schema_cls ,
208
210
data = self .instance ,
209
211
status_code = 201 ,
210
212
)
211
213
212
214
213
215
class Update (BaseView ):
214
- update_kwargs_schema = None
215
- update_args_schema = None
216
- update_body_schema = None
217
- update_request_body_schema = None
218
- update_response_body_schema = None
219
- request_body_schema = None
220
- response_body_schema = None
216
+ update_kwargs_schema_cls = None
217
+ update_args_schema_cls = None
218
+ update_body_schema_cls = None
219
+ update_request_body_schema_cls = None
220
+ update_response_body_schema_cls = None
221
+ request_body_schema_cls = None
222
+ response_body_schema_cls = None
221
223
222
224
loaded_body = None
223
225
instance = None
@@ -229,11 +231,11 @@ def handle_put(self, *args, **kwargs):
229
231
return self .handle_update (* args , partial = False , ** kwargs )
230
232
231
233
def handle_update (self , * args , partial , ** kwargs ):
232
- self .handle_kwargs (self .update_kwargs_schema )
233
- self .handle_args (self .update_args_schema )
234
+ self .handle_kwargs (self .update_kwargs_schema_cls )
235
+ self .handle_args (self .update_args_schema_cls )
234
236
self .instance = self .get_instance ()
235
- if self .update_request_body_schema is not None :
236
- self .body_schema = self .load_update_request_body_schema
237
+ if self .update_request_body_schema_cls is not None :
238
+ self .body_schema_cls = self .update_request_body_schema_cls
237
239
self .load_update_request_body_schema (partial = partial )
238
240
self .instance = self .update ()
239
241
self .db .session .commit ()
@@ -247,13 +249,13 @@ def load_update_request_body_schema(self, partial):
247
249
data = flask .request .json ,
248
250
partial = partial ,
249
251
)
250
- if self .get_schema_load_instance (self .update_request_body_schema ):
252
+ if self .get_schema_load_instance (self .update_request_body_schema_cls ):
251
253
kwargs ["instance" ] = self .instance
252
- self .loaded_body = self .update_request_body_schema .load (** kwargs )
254
+ self .loaded_body = self .update_request_body_schema_cls () .load (** kwargs )
253
255
254
- def get_schema_load_instance (self , schema ):
256
+ def get_schema_load_instance (self , schema_cls ):
255
257
try :
256
- return schema .Meta .load_instance
258
+ return schema_cls .Meta .load_instance
257
259
except AttributeError :
258
260
return False
259
261
@@ -262,23 +264,23 @@ def update(self):
262
264
263
265
def get_update_response (self ):
264
266
return self .get_schema_success_data (
265
- schema = self .update_response_body_schema ,
267
+ schema_cls = self .update_response_body_schema_cls ,
266
268
data = self .instance ,
267
269
)
268
270
269
271
270
272
class Delete (BaseView ):
271
- delete_kwargs_schema = None
272
- delete_args_schema = None
273
- delete_body_schema = None
274
- delete_response_body_schema = None
275
- response_body_schema = None
273
+ delete_kwargs_schema_cls = None
274
+ delete_args_schema_cls = None
275
+ delete_body_schema_cls = None
276
+ delete_response_body_schema_cls = None
277
+ response_body_schema_cls = None
276
278
277
279
instance = None
278
280
279
281
def handle_delete (self , * args , ** kwargs ):
280
- self .handle_kwargs (self .delete_kwargs_schema )
281
- self .handle_args (self .delete_args_schema )
282
+ self .handle_kwargs (self .delete_kwargs_schema_cls )
283
+ self .handle_args (self .delete_args_schema_cls )
282
284
self .instance = self .get_instance ()
283
285
self .instance = self .delete ()
284
286
self .db .session .commit ()
@@ -294,6 +296,6 @@ def delete(self):
294
296
295
297
def get_delete_response (self ):
296
298
return self .get_schema_success_data (
297
- schema = self .delete_response_body_schema ,
299
+ schema_cls = self .delete_response_body_schema_cls ,
298
300
data = self .instance ,
299
301
)
0 commit comments