summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryo mama <pepper@scannerjammer.com>2015-03-05 19:09:51 -0800
committeryo mama <pepper@scannerjammer.com>2015-03-05 19:09:51 -0800
commite6dcac83910b1d022b05ca68fc8b0d4b2d32c619 (patch)
tree794165705c3d6e9003caae910fbcace9ebaa855f
parente7d397472c7f6f6ba7b911ae8afff9bcb6a56b92 (diff)
fixed some great stuff
-rw-r--r--Pb_Api/ImPattern/Params.py37
-rw-r--r--Pb_Api/Param/MultiSelect.py16
-rw-r--r--config.py1
3 files changed, 47 insertions, 7 deletions
diff --git a/Pb_Api/ImPattern/Params.py b/Pb_Api/ImPattern/Params.py
index c01fd4d..a046d5e 100644
--- a/Pb_Api/ImPattern/Params.py
+++ b/Pb_Api/ImPattern/Params.py
@@ -1,18 +1,45 @@
#!/usr/bin/python2.7
+import re
from Pb_Api.Params import Pb_Api_Params
from Pb_Api.Param import Pb_Api_Param
+from Pb_Api.Param.Option import Pb_Api_Param_Option
+from Pb_Api.Param.Options import Pb_Api_Param_Options
from Pb_Api.Param.Username import Pb_Api_Param_Username
from Pb_Api.Param.Image_Url import Pb_Api_Param_Image_Url
from Pb_Api.Param.MultiSelect import Pb_Api_Param_MultiSelect
-pattern_url_options = [
- { "value":"1.png", "weight":1 },
- { "value":"2.png", "weight":1 },
-]
+from config import PATTERN_BASE_URL
+
+class Pattern_Url_Option(Pb_Api_Param_Option):
+ def __init__(self, **kwargs):
+ super(Pb_Api_Param_Option, self).__init__(**kwargs)
+ @classmethod
+ def from_name(cls, **kwargs):
+ formatted = "{}/{}.png".format(PATTERN_BASE_URL, kwargs["value"])
+ return cls(weight=kwargs["weight"], value=formatted )
+
+class Pattern_Url_Options:
+ def __init__(self, arr):
+ self._values = arr
+ def __iter__(self):
+ return self._values
+ def grep(self, s):
+ for i in self:
+ if re.match(s, i):
+ return i
+
+
+pattern_url_options = Pb_Api_Param_Options([
+ Pattern_Url_Option.from_name(weight=0, value=i) for i in range(1,100) ] + [
+ Pattern_Url_Option.from_name(weight=0, value="A{}".format(i)) for i in range(0, 42)
+])
+
+pattern_url_options.search("A10").weight = 20;
+
class ImPattern_Params(Pb_Api_Params):
def __init__(self):
self.params = [
- Pb_Api_Param_Username(name="username", required=1),
+ Pb_Api_Param_Username(name="username", required=0),
Pb_Api_Param_Image_Url(name="image_url", required=1),
Pb_Api_Param_MultiSelect(name="pattern_url", required=1, options=pattern_url_options)
]
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()
diff --git a/config.py b/config.py
index cb13b7c..46d01ea 100644
--- a/config.py
+++ b/config.py
@@ -1,2 +1,3 @@
USERNAME = "RICHARD_GIOVANNI"
TEST_URL = "http://i.asdf.us/im/fc/imBreak5qI6DN2_1425433157_.png"
+PATTERN_BASE_URL = "http://asdf.us/impattern/patterns"