diff options
Diffstat (limited to 'ricky/param/multiselect.py')
| -rw-r--r-- | ricky/param/multiselect.py | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/ricky/param/multiselect.py b/ricky/param/multiselect.py index 21eca78..8da5374 100644 --- a/ricky/param/multiselect.py +++ b/ricky/param/multiselect.py @@ -5,25 +5,28 @@ from ricky.param import Param class MultiSelect(Param): def __init__(self, **kwargs): super(MultiSelect, self).__init__(**kwargs) + self._options = kwargs.get('options') or [] + if len(self._options): + self._validate_options() + + def options(self): + return self._options + + def _validate_options(self): + try: + pass + except Exception: + raise ValueError('Unable to validate %s\n:' % self.name) def value_get(self): return super(MultiSelect, self).value_get() def value_set(self, value): - if not any([value == i['value'] for i in self._selections]) and \ - value is not None: + if value not in self._options and value is not None: raise ValueError super(MultiSelect, self).value_set(value) value = property(value_get, value_set) def randomize(self): - weights_total = sum(map(lambda x: x["weight"], self.selections())) - choice = random.randint(0, weights_total) - position = 0 - for elem in self.selections(): - position += elem["weight"] - if position >= choice: - self.value = elem["value"] - break - + self.value_set(random.choice(self.options)) |
