diff options
Diffstat (limited to 'Pb_Api/Param')
| -rw-r--r-- | Pb_Api/Param/Image_Url.py | 2 | ||||
| -rw-r--r-- | Pb_Api/Param/MultiSelect.py | 41 | ||||
| -rw-r--r-- | Pb_Api/Param/String.py | 4 | ||||
| -rw-r--r-- | Pb_Api/Param/Username.py | 6 | ||||
| -rw-r--r-- | Pb_Api/Param/__init__.py | 57 |
5 files changed, 73 insertions, 37 deletions
diff --git a/Pb_Api/Param/Image_Url.py b/Pb_Api/Param/Image_Url.py index f5e91b9..bd22513 100644 --- a/Pb_Api/Param/Image_Url.py +++ b/Pb_Api/Param/Image_Url.py @@ -4,4 +4,4 @@ from Pb_Api.Param.String import Pb_Api_Param_String class Pb_Api_Param_Image_Url(Pb_Api_Param_String): def __init__(self, *args, **kwargs): super(Pb_Api_Param_Image_Url, self).__init__(*args, **kwargs) - self.value(TEST_URL, default=1) + self.default(TEST_URL) diff --git a/Pb_Api/Param/MultiSelect.py b/Pb_Api/Param/MultiSelect.py index 4ddf11e..2c8c32c 100644 --- a/Pb_Api/Param/MultiSelect.py +++ b/Pb_Api/Param/MultiSelect.py @@ -1,17 +1,40 @@ +import random from Pb_Api.Param import Pb_Api_Param class Pb_Api_Param_MultiSelect(Pb_Api_Param): def __init__(self, *args, **kwargs): - super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) self._options = kwargs['options'] + super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) def options(self): return self._options - def value(self, *args): - if len(args) > 1: - valid = False - for i in self.options(): - if args[0] == i['value']: valid = True - if not valid : raise ValueError - super(Pb_Api_Param_MultiSelect, self).value(args[0]) + + @property + def value(self): + return super(Pb_Api_Param_MultiSelect, self).get_value() + @value.setter + def value(self, value): + valid = False + for i in self.options(): + if value == i['value']: valid = True + if value is None: valid = True + if not valid : raise ValueError + super(Pb_Api_Param_MultiSelect, self).set_value(value) def randomize(self): - pass + weights_total = sum(map(lambda x: x["weight"], self.options())) + choice = random.randint(0, weights_total) + position = 0 + for elem in self.options(): + position += elem["weight"] + if position >= choice: + self.value = elem["value"] + break + def heaviest(self, param): + heaviest_idx = 0 + heaviest_weight = 0 + idx = 0 + for elem in self.options(): + if elem["weight"] > heaviest_weight: + heaviest_weight = elem["weight"] + heaviest_idx = idx; + idx += 1 + self.value = self.options()[heaviest_idx]["value"] diff --git a/Pb_Api/Param/String.py b/Pb_Api/Param/String.py index a1161a8..3c186f4 100644 --- a/Pb_Api/Param/String.py +++ b/Pb_Api/Param/String.py @@ -1,4 +1,4 @@ from Pb_Api.Param import Pb_Api_Param class Pb_Api_Param_String(Pb_Api_Param): - def __init__(self, *args, **kwargs): - super(Pb_Api_Param_String, self).__init__(*args, **kwargs) + def __init__(self, **kwargs): + super(Pb_Api_Param_String, self).__init__(**kwargs) diff --git a/Pb_Api/Param/Username.py b/Pb_Api/Param/Username.py index 3b691e8..5bd3237 100644 --- a/Pb_Api/Param/Username.py +++ b/Pb_Api/Param/Username.py @@ -2,6 +2,6 @@ from config import USERNAME from Pb_Api.Param.String import Pb_Api_Param_String class Pb_Api_Param_Username(Pb_Api_Param_String): - def __init__(self, *args, **kwargs): - super(Pb_Api_Param_Username, self).__init__(*args, **kwargs) - self.value(USERNAME, default=1) + def __init__(self, **kwargs): + super(Pb_Api_Param_Username, self).__init__(**kwargs) + self.default(USERNAME) diff --git a/Pb_Api/Param/__init__.py b/Pb_Api/Param/__init__.py index 62d05ea..362a3f7 100644 --- a/Pb_Api/Param/__init__.py +++ b/Pb_Api/Param/__init__.py @@ -1,25 +1,38 @@ -class Pb_Api_Param(object): - def __init__(self, *args, **kwargs): - self._name = kwargs['name'] - self._value = kwargs['value'] - def name(self): - return self._name - def required(self): - return self._required +import pprint - def is_default(self, a=0): - if a: self._is_default = 1 - return self._is_default +class Pb_Api_Param(object): +# def __init__(self, **kwargs): + def __init__(self, required=0, set_by_user=0, value=None, name=None, **kwargs): + self._value_default = None + self.name = name + self.required = required + self.is_ready = 0 #should I try that? + self.value = value + self.set_by_user = set_by_user + def __str__(self): + return pprint.pformat(vars(self)) - def value(self, *args, **kwargs): - if len(args) >= 1: - self._value = args[0] - if 'default' in kwargs: - self.is_default(1) - self.is_ready(1) - return self._value + def get_value(self): + if self.set_by_user == 1: + return self._value + return self._value_default + def set_value(self, value): + self._value = value + if not self._value is None: + self.is_ready = 1 + self.set_by_user = 1 #like that? yeah also need method for setting default value + value = property(get_value, set_value) - def is_ready(self, *args): - if len(args) >= 1: - self._is_ready = args[0] - return self._is_ready or not self.required() + def default(self, value): + self._value_default = value + + @property + def is_ready(self): + return self._is_ready or not self.required + @is_ready.setter + def is_ready(self, n): + self._is_ready = n + + + def randomize(self): + pass |
