Skip to content

Commit

Permalink
Fix size rules to consider field type (#37)
Browse files Browse the repository at this point in the history
  • Loading branch information
codingedward committed May 27, 2021
1 parent 6ac6e87 commit b678095
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 17 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
.*.swn
.*.swo
.*.swp
.vim
.coverage
docs/build
.DS_Store
Expand Down
32 changes: 16 additions & 16 deletions flask_sieve/rules_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,9 @@ def validate_before_or_equal(self, value, params, **kwargs):
self._assert_params_size(size=1, params=params, rule='before_or_equal')
return self._compare_dates(value, params[0], operator.le)

def validate_between(self, value, params, **kwargs):
def validate_between(self, value, params, rules, **kwargs):
self._assert_params_size(size=2, params=params, rule='between')
value = self._get_size(value)
value = self._get_size(value, rules)
lower = self._get_size(params[0])
upper = self._get_size(params[1])
return lower <= value and value <= upper
Expand Down Expand Up @@ -251,15 +251,15 @@ def validate_filled(self, value, attribute, nullable, **kwargs):
return self.validate_required(value, attribute, nullable)
return True

def validate_gt(self, value, params, **kwargs):
def validate_gt(self, value, params, rules, **kwargs):
self._assert_params_size(size=1, params=params, rule='gt')
value = self._get_size(value)
value = self._get_size(value, rules)
upper = self._get_size(self._attribute_value(params[0]))
return value > upper

def validate_gte(self, value, params, **kwargs):
def validate_gte(self, value, params, rules, **kwargs):
self._assert_params_size(size=1, params=params, rule='gte')
value = self._get_size(value)
value = self._get_size(value, rules)
upper = self._get_size(self._attribute_value(params[0]))
return value >= upper

Expand Down Expand Up @@ -362,27 +362,27 @@ def validate_ipv4(value, **kwargs):
def validate_json(self, value, **kwargs):
return self._can_call_with_method(json.loads, value)

def validate_lt(self, value, params, **kwargs):
def validate_lt(self, value, params, rules, **kwargs):
self._assert_params_size(size=1, params=params, rule='lt')
if self._is_value_empty(value):
return False
value = self._get_size(value)
value = self._get_size(value, rules)
lower = self._get_size(self._attribute_value(params[0]))
return value < lower

def validate_lte(self, value, params, **kwargs):
def validate_lte(self, value, params, rules, **kwargs):
self._assert_params_size(size=1, params=params, rule='lte')
if self._is_value_empty(value):
return False
value = self._get_size(value)
value = self._get_size(value, rules)
lower = self._get_size(self._attribute_value(params[0]))
return value <= lower

def validate_max(self, value, params, **kwargs):
def validate_max(self, value, params, rules, **kwargs):
self._assert_params_size(size=1, params=params, rule='max')
if self._is_value_empty(value):
return False
value = self._get_size(value)
value = self._get_size(value, rules)
upper = self._get_size(params[0])
return value <= upper

Expand All @@ -396,9 +396,9 @@ def validate_mime_types(self, value, params, **kwargs):
return value.mimetype in params
return kind.mime in params

def validate_min(self, value, params, **kwargs):
def validate_min(self, value, params, rules, **kwargs):
self._assert_params_size(size=1, params=params, rule='min')
value = self._get_size(value)
value = self._get_size(value, rules)
lower = self._get_size(params[0])
return value >= lower

Expand Down Expand Up @@ -487,15 +487,15 @@ def validate_same(self, value, params, **kwargs):
other_value = self._attribute_value(params[0])
return value == other_value

def validate_size(self, value, params, **kwargs):
def validate_size(self, value, params, rules, **kwargs):
self._assert_params_size(size=1, params=params, rule='size')
self._assert_with_method(float, params[0])
other_value = params[0]
if other_value.count('.') > 0:
other_value = float(other_value)
else:
other_value = int(other_value)
return self._get_size(value) == other_value
return self._get_size(value, rules) == other_value

def validate_starts_with(self, value, params, **kwargs):
self._assert_params_size(size=1, params=params, rule='starts_with')
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
name='flask-sieve',
description='A Laravel inspired requests validator for Flask',
long_description='Find the documentation at https://flask-sieve.readthedocs.io/en/latest/',
version='2.0.0',
version='2.0.1',
url='https://github.com/codingedward/flask-sieve',
license='BSD-2',
author='Edward Njoroge',
Expand Down
5 changes: 5 additions & 0 deletions tests/test_rules_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,11 @@ def test_validates_max(self):
rules={'field': ['max:10']},
request={'field': self.image_file}
)
self.assert_passes(
rules={'field': ['bail', 'required', 'string', 'max:10'],
'card_cvv': ['bail', 'required', 'string', 'max:8']},
request={'field': '8777745434', 'card_cvv': '123'}
)

def test_validates_mime_types(self):
self.assert_passes(
Expand Down

0 comments on commit b678095

Please sign in to comment.