Skip to content

Commit b678095

Browse files
authored
Fix size rules to consider field type (#37)
1 parent 6ac6e87 commit b678095

File tree

4 files changed

+23
-17
lines changed

4 files changed

+23
-17
lines changed

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
.*.swn
33
.*.swo
44
.*.swp
5+
.vim
56
.coverage
67
docs/build
78
.DS_Store

Diff for: flask_sieve/rules_processor.py

+16-16
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,9 @@ def validate_before_or_equal(self, value, params, **kwargs):
152152
self._assert_params_size(size=1, params=params, rule='before_or_equal')
153153
return self._compare_dates(value, params[0], operator.le)
154154

155-
def validate_between(self, value, params, **kwargs):
155+
def validate_between(self, value, params, rules, **kwargs):
156156
self._assert_params_size(size=2, params=params, rule='between')
157-
value = self._get_size(value)
157+
value = self._get_size(value, rules)
158158
lower = self._get_size(params[0])
159159
upper = self._get_size(params[1])
160160
return lower <= value and value <= upper
@@ -251,15 +251,15 @@ def validate_filled(self, value, attribute, nullable, **kwargs):
251251
return self.validate_required(value, attribute, nullable)
252252
return True
253253

254-
def validate_gt(self, value, params, **kwargs):
254+
def validate_gt(self, value, params, rules, **kwargs):
255255
self._assert_params_size(size=1, params=params, rule='gt')
256-
value = self._get_size(value)
256+
value = self._get_size(value, rules)
257257
upper = self._get_size(self._attribute_value(params[0]))
258258
return value > upper
259259

260-
def validate_gte(self, value, params, **kwargs):
260+
def validate_gte(self, value, params, rules, **kwargs):
261261
self._assert_params_size(size=1, params=params, rule='gte')
262-
value = self._get_size(value)
262+
value = self._get_size(value, rules)
263263
upper = self._get_size(self._attribute_value(params[0]))
264264
return value >= upper
265265

@@ -362,27 +362,27 @@ def validate_ipv4(value, **kwargs):
362362
def validate_json(self, value, **kwargs):
363363
return self._can_call_with_method(json.loads, value)
364364

365-
def validate_lt(self, value, params, **kwargs):
365+
def validate_lt(self, value, params, rules, **kwargs):
366366
self._assert_params_size(size=1, params=params, rule='lt')
367367
if self._is_value_empty(value):
368368
return False
369-
value = self._get_size(value)
369+
value = self._get_size(value, rules)
370370
lower = self._get_size(self._attribute_value(params[0]))
371371
return value < lower
372372

373-
def validate_lte(self, value, params, **kwargs):
373+
def validate_lte(self, value, params, rules, **kwargs):
374374
self._assert_params_size(size=1, params=params, rule='lte')
375375
if self._is_value_empty(value):
376376
return False
377-
value = self._get_size(value)
377+
value = self._get_size(value, rules)
378378
lower = self._get_size(self._attribute_value(params[0]))
379379
return value <= lower
380380

381-
def validate_max(self, value, params, **kwargs):
381+
def validate_max(self, value, params, rules, **kwargs):
382382
self._assert_params_size(size=1, params=params, rule='max')
383383
if self._is_value_empty(value):
384384
return False
385-
value = self._get_size(value)
385+
value = self._get_size(value, rules)
386386
upper = self._get_size(params[0])
387387
return value <= upper
388388

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

399-
def validate_min(self, value, params, **kwargs):
399+
def validate_min(self, value, params, rules, **kwargs):
400400
self._assert_params_size(size=1, params=params, rule='min')
401-
value = self._get_size(value)
401+
value = self._get_size(value, rules)
402402
lower = self._get_size(params[0])
403403
return value >= lower
404404

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

490-
def validate_size(self, value, params, **kwargs):
490+
def validate_size(self, value, params, rules, **kwargs):
491491
self._assert_params_size(size=1, params=params, rule='size')
492492
self._assert_with_method(float, params[0])
493493
other_value = params[0]
494494
if other_value.count('.') > 0:
495495
other_value = float(other_value)
496496
else:
497497
other_value = int(other_value)
498-
return self._get_size(value) == other_value
498+
return self._get_size(value, rules) == other_value
499499

500500
def validate_starts_with(self, value, params, **kwargs):
501501
self._assert_params_size(size=1, params=params, rule='starts_with')

Diff for: setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
name='flask-sieve',
66
description='A Laravel inspired requests validator for Flask',
77
long_description='Find the documentation at https://flask-sieve.readthedocs.io/en/latest/',
8-
version='2.0.0',
8+
version='2.0.1',
99
url='https://github.com/codingedward/flask-sieve',
1010
license='BSD-2',
1111
author='Edward Njoroge',

Diff for: tests/test_rules_processor.py

+5
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,11 @@ def test_validates_max(self):
597597
rules={'field': ['max:10']},
598598
request={'field': self.image_file}
599599
)
600+
self.assert_passes(
601+
rules={'field': ['bail', 'required', 'string', 'max:10'],
602+
'card_cvv': ['bail', 'required', 'string', 'max:8']},
603+
request={'field': '8777745434', 'card_cvv': '123'}
604+
)
600605

601606
def test_validates_mime_types(self):
602607
self.assert_passes(

0 commit comments

Comments
 (0)