From 7b194f24fa55130fdd098fef68220e76581a1386 Mon Sep 17 00:00:00 2001 From: Martin Kosek Date: Jul 18 2011 14:02:21 +0000 Subject: 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 --- diff --git a/ipalib/parameters.py b/ipalib/parameters.py index aecbbff..2da6fd1 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -1065,6 +1065,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).