summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kosek <mkosek@redhat.com>2011-07-14 09:14:07 +0200
committerMartin Kosek <mkosek@redhat.com>2011-07-18 16:02:07 +0200
commitbc8be0a41effbd7a1ffe761829783afa8a59539e (patch)
tree077b11a8ea12963b7a6c43c24881c03258fd9022
parent1a207bb23c88da19d4cc0eb455a2734278da41d2 (diff)
downloadfreeipa-bc8be0a41effbd7a1ffe761829783afa8a59539e.tar.gz
freeipa-bc8be0a41effbd7a1ffe761829783afa8a59539e.tar.xz
freeipa-bc8be0a41effbd7a1ffe761829783afa8a59539e.zip
Improve long integer type validation
Passing a number of "long" type to IPA Int parameter invokes user-unfriendly error message about incompatible types. This patch improves Int parameter with user understandable message along with maximum value he can pass. https://fedorahosted.org/freeipa/ticket/1346
-rw-r--r--ipalib/parameters.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index da3b05cf7..982b192a7 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -1066,6 +1066,30 @@ class Int(Number):
maxvalue=self.maxvalue,
)
+ def _validate_scalar(self, value, index=None):
+ if type(value) is long:
+ # too big number for int type to hold
+ if self.maxvalue is not None:
+ raise ValidationError(
+ name=self.name,
+ value=value,
+ index=index,
+ error=_('can be at most %(maxvalue)d') % dict(
+ maxvalue=self.maxvalue,
+ )
+ )
+ else:
+ raise ValidationError(
+ name=self.name,
+ value=value,
+ index=index,
+ error=_('can be at most %(maxvalue)d') % dict(
+ maxvalue=MAXINT,
+ )
+ )
+ super(Int, self)._validate_scalar(value, index)
+
+
class Float(Number):
"""
A parameter for floating-point values (stored in the ``float`` type).