diff options
Diffstat (limited to 'ricky/param')
| -rw-r--r-- | ricky/param/__init__.py | 3 | ||||
| -rw-r--r-- | ricky/param/constrainednumber.py | 27 |
2 files changed, 22 insertions, 8 deletions
diff --git a/ricky/param/__init__.py b/ricky/param/__init__.py index abb5e6a..3bf5c7e 100644 --- a/ricky/param/__init__.py +++ b/ricky/param/__init__.py @@ -10,14 +10,13 @@ class Param(object): name=None, **kwargs ): - self._value_default = None self.name = name self.required = required self._value_default = kwargs.get("default") or None if not hasattr(self, "set_by_user"): self._set_by_user = set_by_user - if self.value is not None and \ + if hasattr(self, "value") and self.value is not None and \ kwargs.get("value") is not None: self._value = kwargs.get("value") else: 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): |
