@@ -16,7 +16,8 @@ class InputFilter:
1616 Base class for input filters.
1717 """
1818
19- def __init__ (self ) -> None :
19+ def __init__ (self , methods : Optional [List [str ]]= None ) -> None :
20+ self .methods = methods or ["GET" , "POST" , "PATCH" , "PUT" , "DELETE" ]
2021 self .fields = {}
2122 self .conditions = []
2223 self .global_filters = []
@@ -82,9 +83,6 @@ def _applyFilters(self, field_name: str, value: Any) -> Any:
8283
8384 field = self .fields .get (field_name )
8485
85- if not field :
86- return value
87-
8886 for filter_ in field ["filters" ]:
8987 value = filter_ .apply (value )
9088
@@ -100,9 +98,6 @@ def _validateField(self, field_name: str, value: Any) -> None:
10098
10199 field = self .fields .get (field_name )
102100
103- if not field :
104- return
105-
106101 for validator in field ["validators" ]:
107102 validator .validate (value )
108103
@@ -154,38 +149,27 @@ def _callExternalApi(
154149 return result
155150
156151 @staticmethod
157- def __replacePlaceholders (url : str , validated_data : dict ) -> str :
152+ def __replacePlaceholders (value : str , validated_data : dict ) -> str :
158153 """
159- Ersetzt alle Platzhalter in der URL, die mit {{}} definiert sind,
160- durch die entsprechenden Werte aus den Parametern .
154+ Replace all placeholders, marked with '{{ }}' in value with the corresponding
155+ values from validated_data .
161156 """
162157
163158 return re .sub (
164159 r"{{(.*?)}}" ,
165160 lambda match : str (validated_data .get (match .group (1 ))),
166- url ,
161+ value ,
167162 )
168163
169- @staticmethod
170164 def __replacePlaceholdersInParams (
171- params : dict , validated_data : dict
165+ self , params : dict , validated_data : dict
172166 ) -> dict :
173167 """
174168 Replace all placeholders in params with the
175169 corresponding values from validated_data.
176170 """
177- replaced_params = {}
178- for key , value in params .items ():
179- if isinstance (value , str ):
180- replaced_value = re .sub (
181- r"{{(.*?)}}" ,
182- lambda match : str (validated_data .get (match .group (1 ), "" )),
183- value ,
184- )
185- replaced_params [key ] = replaced_value
186- else :
187- replaced_params [key ] = value
188- return replaced_params
171+ return {key : self .__replacePlaceholders (value , validated_data ) if isinstance (value , str ) else value
172+ for key , value in params .items ()}
189173
190174 def validateData (
191175 self , data : Dict [str , Any ], kwargs : Dict [str , Any ] = None
@@ -295,31 +279,19 @@ def decorator(
295279 def wrapper (
296280 * args , ** kwargs
297281 ) -> Union [Response , Tuple [Any , Dict [str , Any ]]]:
298- if request .method == "GET" :
299- data = request .args
300-
301- elif request .method in ["POST" , "PUT" , "DELETE" ]:
302- if not request .is_json :
303- data = request .args
304-
305- else :
306- data = request .json
307-
308- else :
282+ if request .method not in cls ().methods :
309283 return Response (
310- status = 415 , response = "Unsupported method Type "
284+ status = 405 , response = "Method Not Allowed "
311285 )
312286
313- inputFilter = cls ()
287+ data = request . json if request . is_json else request . args
314288
315289 try :
316- g .validated_data = inputFilter .validateData (data , kwargs )
290+ g .validated_data = cls () .validateData (data , kwargs )
317291
318292 except ValidationError as e :
319293 return Response (status = 400 , response = str (e ))
320294
321295 return f (* args , ** kwargs )
322-
323296 return wrapper
324-
325297 return decorator
0 commit comments