summaryrefslogtreecommitdiff
path: root/ricky/param/constrainednumber.py
diff options
context:
space:
mode:
Diffstat (limited to 'ricky/param/constrainednumber.py')
-rw-r--r--ricky/param/constrainednumber.py27
1 files changed, 21 insertions, 6 deletions
diff --git a/ricky/param/constrainednumber.py b/ricky/param/constrainednumber.py
index 8585481..079ba10 100644
--- a/ricky/param/constrainednumber.py
+++ b/ricky/param/constrainednumber.py
@@ -14,17 +14,36 @@ class ConstrainedNumber(Param):
self.forbidden_range_max = kwargs.get('forbidden_range_max')
self.enforce_int = kwargs.get('enforce_int')
self.prec = kwargs.get('prec')
+ super(ConstrainedNumber, self).__init__(**kwargs)
if "default" not in kwargs:
self.randomize()
kwargs["default"] = self._value
- super(ConstrainedNumber, self).__init__(**kwargs)
@property
def value(self):
- return super(ConstrainedNumber, self).value_get()
+ return self._value
+# self._set_by_user = True # FIXME
+# return super(ConstrainedNumber, self).value_get()
@value.setter
def value(self, value):
+ if not self.required and value in ["", None]:
+ return
+ if self.enforce_int:
+ try:
+ value = int(value)
+ except ValueError:
+ raise ValueError(
+ "Value %s for %s is not an int" % (value, self.name)
+ )
+ else:
+ try:
+ value = decimal.Decimal(value)
+ except ValueError:
+ raise ValueError(
+ "Value %s for %s is not a valid number type" %
+ (value, self.name)
+ )
if value is not None and (
value < self.range_min or
value > self.range_max
@@ -51,10 +70,6 @@ class ConstrainedNumber(Param):
self.forbidden_range_max
)
)
- if self.enforce_int and type(value) != int:
- raise ValueError(
- "Value %s is not an int" % value
- )
self._value = value
def __str__(self):