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
This commit is contained in:
Martin Kosek
2011-07-14 09:14:07 +02:00
parent 1a207bb23c
commit bc8be0a41e

View File

@@ -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).