summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xexample.py9
m---------photoblaster0
-rw-r--r--ricky/config.py24
-rw-r--r--ricky/param/__init__.py3
-rw-r--r--ricky/param/constrainednumber.py27
-rw-r--r--ricky/pb.py29
6 files changed, 66 insertions, 26 deletions
diff --git a/example.py b/example.py
index 6fdc756..fa97a75 100755
--- a/example.py
+++ b/example.py
@@ -7,10 +7,15 @@ from ricky.pbpattern import PbPattern
api = PbGradient()
params = api.params_init()
-print params
params.randomize()
print params
-print params.execute()
+#print params
+#print params.execute()
+data = api.data_from_url(
+ "http://i.asdf.us/im/8f/PbGradientblue4-DarkGreen_1448917630.png"
+)
+params.from_dict(data['params'])
+print params
#print params['color1']
#params['color1'].from_normalized(0.28187431585)
#print params['color1']
diff --git a/photoblaster b/photoblaster
-Subproject b08d2f2cadd971b2a66defe2fc24e6c5c455dab
+Subproject a78fb8a603c2fbafb61b39a6e0c6f0b1f4ca647
diff --git a/ricky/config.py b/ricky/config.py
index 04da7e1..2040435 100644
--- a/ricky/config.py
+++ b/ricky/config.py
@@ -1,13 +1,27 @@
+import os
+
"""ALL GLOBAL CONSTANTS GO HERE"""
+
+
USERNAME = "RICHARD_GIOVANNI"
TEST_URL = (
"http://i.asdf.us/im/"
"65/imBreak5qI6DN2_14254-PbPattern_1444004782_pepper.png"
)
-PATTERN_URL_BASE = "http://asdf.us/impattern/patterns"
-IMPATTERN_URL = "http://asdf.us/im/api/impattern"
-IMGRID_URL = "http://asdf.us/im/api/imgrid"
-IMGRADIENT_URL = "http://asdf.us/im/api/imgradient"
-IMBREAK_URL = "http://asdf.us/im/api/imbreak"
+PB_BASE = "http://asdf.us/"
+
+
+def _add_pb_base(path):
+ return os.path.join(PB_BASE, path)
+
+PATTERN_URL_BASE = _add_pb_base("impattern/patterns")
+IMPATTERN_URL = _add_pb_base("im/api/impattern")
+IMGRID_URL = _add_pb_base("im/api/imgrid")
+IMGRADIENT_URL = _add_pb_base("im/api/imgradient")
+IMBREAK_URL = _add_pb_base("im/api/imbreak")
+PB_DATA_URL = _add_pb_base("im/data")
+
+# offline mode, true by default
OFFLINE = True
+
PROBABILITIES_DIR = "share/probabilities"
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):
diff --git a/ricky/pb.py b/ricky/pb.py
index 10674f2..4a94a46 100644
--- a/ricky/pb.py
+++ b/ricky/pb.py
@@ -3,7 +3,7 @@ import urllib
import urllib2
import sys
import simplejson as json
-from ricky.config import OFFLINE
+from ricky.config import OFFLINE, PB_DATA_URL
class Pb(object):
@@ -12,7 +12,7 @@ class Pb(object):
self.url = ""
self._offline = OFFLINE
- def post_request(self, url, params):
+ def http_request(self, url, params={}):
params = urllib.urlencode(params)
headers = {
"Content-type": "application/x-www-form-urlencoded",
@@ -24,7 +24,10 @@ class Pb(object):
"Accept": "text/plain"
}
try:
- req = urllib2.Request(url, params, headers)
+ if params:
+ req = urllib2.Request(url, params, headers)
+ else:
+ req = urllib2.Request(url, params, headers)
response = urllib2.urlopen(req)
return response.read()
except ValueError:
@@ -53,22 +56,26 @@ class Pb(object):
instance.file_s3move()
return instance.file_dict()
return json.loads(
- self.post_request(self.url, params.as_dict())
+ self.http_request(self.url, params=params.as_dict())
)
- def params_from_url(self, url):
+ def data_from_url(self, url):
"""
retrieves image params from db using the url
"""
+ newfile = os.path.split(url)[-1]
if self._offline:
sys.path.append("./photoblaster")
from photoblaster.db.models.imcmd import ImCmd
- newfile = os.path.split(url)[-1]
- files = ImCmd.search({"newfile": newfile})
- if not len(files):
+ result = ImCmd.search(newfile=newfile).first()
+ try:
+ return {
+ "module": result.tag.split(":")[0],
+ "params": json.loads(result.dataobj)
+ }
+ except AttributeError:
+ sys.stderr.write("No usable data found in db\n")
return None
- filedata = json.loads(files[0].dataobj)
- return filedata
else:
- # needs a route
+ print self.http_request("%s?newfile=%s" % (PB_DATA_URL, newfile))
raise NotImplementedError("Not yet implemented\n")