safeshield 1.4.6__tar.gz → 1.4.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {safeshield-1.4.6 → safeshield-1.4.8}/PKG-INFO +1 -1
- {safeshield-1.4.6 → safeshield-1.4.8}/safeshield.egg-info/PKG-INFO +1 -1
- {safeshield-1.4.6 → safeshield-1.4.8}/setup.py +1 -1
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/factory.py +12 -3
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/utilities.py +12 -22
- {safeshield-1.4.6 → safeshield-1.4.8}/LICENSE +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/README.md +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/safeshield.egg-info/SOURCES.txt +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/safeshield.egg-info/dependency_links.txt +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/safeshield.egg-info/requires.txt +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/safeshield.egg-info/top_level.txt +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/setup.cfg +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/__init__.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/core/__init__.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/core/validator.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/database/__init__.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/database/detector.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/database/manager.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/exceptions.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/__init__.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/array.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/base.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/basic.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/boolean.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/comparison.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/date.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/files.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/format.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/numeric.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/rules/string.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/services/__init__.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/services/rule_conflict.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/services/rule_error_handler.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/services/rule_preparer.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/utils/__init__.py +0 -0
- {safeshield-1.4.6 → safeshield-1.4.8}/validator/utils/string.py +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# factory.py
|
|
2
|
-
from typing import Type, Dict, List
|
|
2
|
+
from typing import Type, Dict, List, Any
|
|
3
3
|
from validator.rules import all_rules
|
|
4
4
|
from validator.rules.base import Rule
|
|
5
5
|
|
|
@@ -14,8 +14,17 @@ class RuleFactory:
|
|
|
14
14
|
raise ValueError(f"Unknown validation rule: {rule_name}")
|
|
15
15
|
|
|
16
16
|
@classmethod
|
|
17
|
-
def register_rule(cls, name: str,
|
|
18
|
-
|
|
17
|
+
def register_rule(cls, name: str, validate_func: callable, message_func: callable):
|
|
18
|
+
class NewRule(Rule):
|
|
19
|
+
_name = name
|
|
20
|
+
|
|
21
|
+
def validate(self, field: str, value: Any, params: List[str]) -> bool:
|
|
22
|
+
return validate_func(field, value, params)
|
|
23
|
+
|
|
24
|
+
def message(self, field: str) -> str:
|
|
25
|
+
return message_func(field, self.params)
|
|
26
|
+
|
|
27
|
+
cls._rules[name] = NewRule
|
|
19
28
|
|
|
20
29
|
@classmethod
|
|
21
30
|
def has_rule(cls, rule_name: str) -> bool:
|
|
@@ -264,23 +264,6 @@ class MissingWithAllRule(MissingRule):
|
|
|
264
264
|
|
|
265
265
|
return True
|
|
266
266
|
|
|
267
|
-
class IncludeIfRule(ExcludeRule):
|
|
268
|
-
def validate(self, field: str, value: Any, params: List[str]) -> bool:
|
|
269
|
-
if len(params) == 1 and callable(params[0]):
|
|
270
|
-
condition_met = params[0](self.validator.data)
|
|
271
|
-
elif len(params) == 1 and isinstance(params[0], bool):
|
|
272
|
-
condition_met = params[0]
|
|
273
|
-
else:
|
|
274
|
-
conditions = list(zip(params[::2], params[1::2]))
|
|
275
|
-
condition_met = all(
|
|
276
|
-
str(self.get_field_value(f)) == str(v)
|
|
277
|
-
for f, v in conditions
|
|
278
|
-
)
|
|
279
|
-
|
|
280
|
-
if not condition_met:
|
|
281
|
-
return super().validate(field, value, params)
|
|
282
|
-
return True
|
|
283
|
-
|
|
284
267
|
class ExcludeIfRule(ExcludeRule):
|
|
285
268
|
def validate(self, field: str, value: Any, params: List[str]) -> bool:
|
|
286
269
|
if len(params) == 1 and callable(params[0]):
|
|
@@ -300,12 +283,19 @@ class ExcludeIfRule(ExcludeRule):
|
|
|
300
283
|
|
|
301
284
|
class ExcludeUnlessRule(ExcludeRule):
|
|
302
285
|
def validate(self, field: str, value: Any, params: List[str]) -> bool:
|
|
303
|
-
|
|
286
|
+
all_conditions_met = False
|
|
304
287
|
|
|
305
|
-
|
|
306
|
-
self.
|
|
307
|
-
|
|
308
|
-
|
|
288
|
+
if len(params) == 1 and callable(params[0]):
|
|
289
|
+
all_conditions_met = params[0](self.validator.data)
|
|
290
|
+
elif len(params) == 1 and isinstance(params[0], bool):
|
|
291
|
+
all_conditions_met = params[0]
|
|
292
|
+
else:
|
|
293
|
+
conditions = [(f.strip(), v.strip()) for f, v in zip(params[::2], params[1::2])]
|
|
294
|
+
|
|
295
|
+
all_conditions_met = all(
|
|
296
|
+
self.get_field_value(f) == v
|
|
297
|
+
for f, v in conditions
|
|
298
|
+
)
|
|
309
299
|
|
|
310
300
|
if not all_conditions_met:
|
|
311
301
|
return super().validate(field, value, params)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|