diff options
Diffstat (limited to 'Pb_Api/Param/MultiSelect.py')
| -rw-r--r-- | Pb_Api/Param/MultiSelect.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/Pb_Api/Param/MultiSelect.py b/Pb_Api/Param/MultiSelect.py index 2c8c32c..d48d1f8 100644 --- a/Pb_Api/Param/MultiSelect.py +++ b/Pb_Api/Param/MultiSelect.py @@ -5,8 +5,16 @@ class Pb_Api_Param_MultiSelect(Pb_Api_Param): def __init__(self, *args, **kwargs): self._options = kwargs['options'] super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) + self._validate_options() + self.default(self._choose_heaviest()) def options(self): return self._options + def _validate_options(self): + try: + int(self._options[0]['weight']) + self._options[0]['value'] + except Exception as e: + raise ValueError @property def value(self): @@ -19,6 +27,7 @@ class Pb_Api_Param_MultiSelect(Pb_Api_Param): if value is None: valid = True if not valid : raise ValueError super(Pb_Api_Param_MultiSelect, self).set_value(value) + def randomize(self): weights_total = sum(map(lambda x: x["weight"], self.options())) choice = random.randint(0, weights_total) @@ -28,7 +37,8 @@ class Pb_Api_Param_MultiSelect(Pb_Api_Param): if position >= choice: self.value = elem["value"] break - def heaviest(self, param): + + def _choose_heaviest(self): heaviest_idx = 0 heaviest_weight = 0 idx = 0 @@ -37,4 +47,6 @@ class Pb_Api_Param_MultiSelect(Pb_Api_Param): heaviest_weight = elem["weight"] heaviest_idx = idx; idx += 1 - self.value = self.options()[heaviest_idx]["value"] + return self.options()[heaviest_idx]["value"] + def heaviest(self): + self.value = self._get_heaviest() |
