@@ -47,6 +47,7 @@ async def wrapper(request: Request, obj_id: int, **kwargs):
4747
4848 params_function = OrderedDict (signature (func ).parameters )
4949 data_dict .update ({i_k : i_v for i_k , i_v in kwargs .items () if i_k in params_function })
50+ data_dict = {i_k : i_v for i_k , i_v in data_dict .items () if i_k in params_function }
5051 data_schema : Any = await func (** data_dict )
5152 return schema_resp (
5253 data = {
@@ -91,6 +92,7 @@ async def wrapper(request: Request, obj_id: int, data: schema_in, **kwargs): #
9192
9293 params_function = OrderedDict (signature (func ).parameters )
9394 data_dict .update ({i_k : i_v for i_k , i_v in kwargs .items () if i_k in params_function })
95+ data_dict = {i_k : i_v for i_k , i_v in data_dict .items () if i_k in params_function }
9496 data_schema : Any = await func (** data_dict )
9597 return schema_resp (
9698 data = {
@@ -126,6 +128,7 @@ async def wrapper(request: Request, obj_id: int, **kwargs): # type: ignore
126128
127129 params_function = OrderedDict (signature (func ).parameters )
128130 data_dict .update ({i_k : i_v for i_k , i_v in kwargs .items () if i_k in params_function })
131+ data_dict = {i_k : i_v for i_k , i_v in data_dict .items () if i_k in params_function }
129132 await func (** data_dict )
130133 return Response (status_code = status .HTTP_204_NO_CONTENT )
131134
@@ -139,6 +142,48 @@ async def wrapper(request: Request, obj_id: int, **kwargs): # type: ignore
139142 return inner
140143
141144
145+ def delete_list_jsonapi (
146+ schema : Type [BaseModel ],
147+ model : Type [TypeModel ],
148+ engine : DBORMType ,
149+ ) -> Callable :
150+ """DELETE method router (Decorator for JSON API)."""
151+
152+ def inner (func : Callable ) -> Callable :
153+ async def wrapper (
154+ request : Request ,
155+ filters_list : Optional [str ] = Query (
156+ None ,
157+ alias = "filter" ,
158+ description = "[Filtering docs](https://flask-combo-jsonapi.readthedocs.io/en/latest/filtering.html)"
159+ "\n Examples:\n * filter for timestamp interval: "
160+ '`[{"name": "timestamp", "op": "ge", "val": "2020-07-16T11:35:33.383"},'
161+ '{"name": "timestamp", "op": "le", "val": "2020-07-21T11:35:33.383"}]`' ,
162+ ),
163+ ** kwargs ,
164+ ):
165+ query_params = QueryStringManager (request = request , schema = schema )
166+ data_dict : dict = dict (query_params = query_params )
167+ if is_necessary_request (func ):
168+ data_dict ["request" ] = request
169+
170+ params_function = OrderedDict (signature (func ).parameters )
171+ data_dict .update ({i_k : i_v for i_k , i_v in kwargs .items () if i_k in params_function })
172+ data_dict = {i_k : i_v for i_k , i_v in data_dict .items () if i_k in params_function }
173+ await func (** data_dict )
174+ return Response (status_code = status .HTTP_204_NO_CONTENT )
175+
176+ # mypy ругается что нет метода __signature__, как это обойти красиво- не знаю
177+ wrapper .__signature__ = update_signature ( # type: ignore
178+ sig = signature (wrapper ),
179+ schema = schema ,
180+ other = OrderedDict (signature (func ).parameters ),
181+ )
182+ return wrapper
183+
184+ return inner
185+
186+
142187async def _get_single_response (
143188 query ,
144189 query_params : QueryStringManager ,
@@ -203,6 +248,7 @@ async def wrapper(
203248
204249 params_function = OrderedDict (signature (func ).parameters )
205250 data .update ({i_k : i_v for i_k , i_v in kwargs .items () if i_k in params_function })
251+ data = {i_k : i_v for i_k , i_v in data .items () if i_k in params_function }
206252 query = await func (** data )
207253
208254 if engine is DBORMType .sqlalchemy :
@@ -263,6 +309,7 @@ async def wrapper(request: Request, data: schema_in, **kwargs): # type: ignore
263309
264310 params_function = OrderedDict (signature (func ).parameters )
265311 data_dict .update ({i_k : i_v for i_k , i_v in kwargs .items () if i_k in params_function })
312+ data_dict = {i_k : i_v for i_k , i_v in data_dict .items () if i_k in params_function }
266313 data_pydantic : Any = await func (** data_dict )
267314 return schema_resp (
268315 data = {
0 commit comments