From d5fda056ff17b7a2ac220dc3e528d32078f3fb2f Mon Sep 17 00:00:00 2001 From: mdipierro Date: Fri, 11 Oct 2013 17:07:17 -0500 Subject: [PATCH] simplified logic for number validators --- VERSION | 2 +- gluon/validators.py | 38 ++++++++++++++------------------------ 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/VERSION b/VERSION index 4e90ec7e..af1032af 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.7.2-stable+timestamp.2013.10.11.16.58.14 +Version 2.7.2-stable+timestamp.2013.10.11.17.06.24 diff --git a/gluon/validators.py b/gluon/validators.py index e0ad0fdd..ac955200 100644 --- a/gluon/validators.py +++ b/gluon/validators.py @@ -696,11 +696,11 @@ class IS_INT_IN_RANGE(Validator): >>> IS_INT_IN_RANGE(None,5)('4') (4, None) >>> IS_INT_IN_RANGE(None,5)('6') - (6, 'enter an integer less than or equal to 4') + ('6', 'enter an integer less than or equal to 4') >>> IS_INT_IN_RANGE(1,None)('4') (4, None) >>> IS_INT_IN_RANGE(1,None)('0') - (0, 'enter an integer greater than or equal to 1') + ('0', 'enter an integer greater than or equal to 1') >>> IS_INT_IN_RANGE()(6) (6, None) >>> IS_INT_IN_RANGE()('abc') @@ -742,10 +742,10 @@ class IS_INT_IN_RANGE(Validator): def __call__(self, value): if value and str(value).isdigit(): - value = int(value) - if ((self.minimum is None or value >= self.minimum) and - (self.maximum is None or value < self.maximum)): - return (value, None) + v = int(value) + if ((self.minimum is None or v >= self.minimum) and + (self.maximum is None or v < self.maximum)): + return (v, None) return (value, self.error_message) def str2dec(number): @@ -828,17 +828,12 @@ class IS_FLOAT_IN_RANGE(Validator): def __call__(self, value): try: if self.dot == '.': - fvalue = float(value) + v = float(value) else: - fvalue = float(str(value).replace(self.dot, '.')) - if self.minimum is None: - if self.maximum is None or fvalue <= self.maximum: - return (fvalue, None) - elif self.maximum is None: - if fvalue >= self.minimum: - return (fvalue, None) - elif self.minimum <= fvalue <= self.maximum: - return (fvalue, None) + v = float(str(value).replace(self.dot, '.')) + if ((self.minimum is None or v >= self.minimum) and + (self.maximum is None or v <= self.maximum)): + return (v, None) except (ValueError, TypeError): pass return (value, self.error_message) @@ -937,14 +932,9 @@ class IS_DECIMAL_IN_RANGE(Validator): v = value else: v = decimal.Decimal(str(value).replace(self.dot, '.')) - if self.minimum is None: - if self.maximum is None or v <= self.maximum: - return (v, None) - elif self.maximum is None: - if v >= self.minimum: - return (v, None) - elif self.minimum <= v <= self.maximum: - return (v, None) + if ((self.minimum is None or v >= self.minimum) and + (self.maximum is None or v <= self.maximum)): + return (v, None) except (ValueError, TypeError, decimal.InvalidOperation): pass return (value, self.error_message)