From 7a69e087f77b81b2041ac30ee9e15130ec3de380 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Thu, 6 Apr 2017 20:48:12 +0200 Subject: [PATCH] prevent is_empty from stripping whitespaces, close #1570 --- gluon/tests/test_validators.py | 12 ++++++------ gluon/validators.py | 5 +++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/gluon/tests/test_validators.py b/gluon/tests/test_validators.py index 502b193d..16bc9977 100644 --- a/gluon/tests/test_validators.py +++ b/gluon/tests/test_validators.py @@ -434,21 +434,21 @@ class TestValidators(unittest.TestCase): rtn = IS_NOT_EMPTY()('x') self.assertEqual(rtn, ('x', None)) rtn = IS_NOT_EMPTY()(' x ') - self.assertEqual(rtn, ('x', None)) + self.assertEqual(rtn, (' x ', None)) rtn = IS_NOT_EMPTY()(None) self.assertEqual(rtn, (None, 'Enter a value')) rtn = IS_NOT_EMPTY()('') self.assertEqual(rtn, ('', 'Enter a value')) rtn = IS_NOT_EMPTY()(' ') - self.assertEqual(rtn, ('', 'Enter a value')) + self.assertEqual(rtn, (' ', 'Enter a value')) rtn = IS_NOT_EMPTY()(' \n\t') - self.assertEqual(rtn, ('', 'Enter a value')) + self.assertEqual(rtn, (' \n\t', 'Enter a value')) rtn = IS_NOT_EMPTY()([]) self.assertEqual(rtn, ([], 'Enter a value')) rtn = IS_NOT_EMPTY(empty_regex='def')('def') - self.assertEqual(rtn, ('', 'Enter a value')) + self.assertEqual(rtn, ('def', 'Enter a value')) rtn = IS_NOT_EMPTY(empty_regex='de[fg]')('deg') - self.assertEqual(rtn, ('', 'Enter a value')) + self.assertEqual(rtn, ('deg', 'Enter a value')) rtn = IS_NOT_EMPTY(empty_regex='def')('abc') self.assertEqual(rtn, ('abc', None)) @@ -780,7 +780,7 @@ class TestValidators(unittest.TestCase): rtn = IS_EMPTY_OR(IS_EMAIL())('abc') self.assertEqual(rtn, ('abc', 'Enter a valid email address')) rtn = IS_EMPTY_OR(IS_EMAIL())(' abc ') - self.assertEqual(rtn, ('abc', 'Enter a valid email address')) + self.assertEqual(rtn, (' abc ', 'Enter a valid email address')) rtn = IS_EMPTY_OR(IS_IN_SET([('id1', 'first label'), ('id2', 'second label')], zero='zero')).options(zero=False) self.assertEqual(rtn, [('', ''), ('id1', 'first label'), ('id2', 'second label')]) rtn = IS_EMPTY_OR(IS_IN_SET([('id1', 'first label'), ('id2', 'second label')], zero='zero')).options() diff --git a/gluon/validators.py b/gluon/validators.py index 0aa1ec37..e6b6e848 100644 --- a/gluon/validators.py +++ b/gluon/validators.py @@ -989,14 +989,15 @@ class IS_DECIMAL_IN_RANGE(Validator): def is_empty(value, empty_regex=None): + _value = value """test empty field""" if isinstance(value, (str, unicodeT)): value = value.strip() if empty_regex is not None and empty_regex.match(value): value = '' if value is None or value == '' or value == []: - return (value, True) - return (value, False) + return (_value, True) + return (_value, False) class IS_NOT_EMPTY(Validator):