From 734114b9a6bed13883b9f33e3a5acafc52af07a9 Mon Sep 17 00:00:00 2001 From: Pepper Date: Sat, 28 Feb 2015 03:46:21 -0500 Subject: fixed gradient problem...added better error logging for apps in testing --- gradient.py | 89 +++++++++++++++++++++++++++++-------------------------------- pbserver.py | 23 +++++++++++++++- 2 files changed, 65 insertions(+), 47 deletions(-) diff --git a/gradient.py b/gradient.py index 1fa8e9f..6d2e15f 100755 --- a/gradient.py +++ b/gradient.py @@ -47,16 +47,7 @@ WORKING_DIR = '/var/www/cache' DEFAULT_WIDTH = "200" DEFAULT_HEIGHT = "200" -BEVELVALUES = { - "flatout": ["-s","-m","outer"], - "flatinner": ["-s","-m","inner"], - "evenlyframed": ["-s ", "-m ", "split"], - "biginner": ["-s","-m","outer","-c","50","-b","red","-a","25"], - "bigouter": ["-s","-m","split","-c","50","-b","red","-a","25"], - "dramaticflatout": ["-s","-m","outer","-a","25","-b","blue"], - "dramaticflatinner": ["-s","-m","outer","-a","25","-b","blue"], - } -BEVEL_DEFAULT = "12"; +DEFAULT_BEVEL_PERCENT = "12"; HALFTONEVALUES = { "checkeredfade": "h6x6a", @@ -67,6 +58,24 @@ HALFTONEVALUES = { "flatstripes": "o2x2", } +TEST_FORM = { + "width" : "200", + "color1" : "#ffdead", + "color2" : "blue", + "stripes" : "true", + "stripenumber" : "20", + "gradienttype" : "radial", + "stripeintensity" : "20", + "halftone" : "checkeredfade", + "percentbeveled" : "30", + "flip" : "true", + "bevel" : "flatinner", + "rotate" : "20", + "height" : "200", + "filetype" : "jpg", + "username" : "whatever" +} + def sanitize (s): return re.sub(re.compile(r'\W+'), '', s) @@ -90,10 +99,8 @@ class Gradient: if key in form: if key in ['color1', 'color2']: params[key] = form[key] - #params[key] = form[key].value else: params[key] = sanitize(form[key]) - #params[key] = sanitize(form[key].value) if key in ['rotate','tilt','blurriness','stripenumber','stripeintensity']: params[key] = params[key] if is_number(params[key]) else "" @@ -106,7 +113,11 @@ class Gradient: params["color1"] = params["color1"] or DEFAULT_COLORS["color1"]; params["color2"] = params["color2"] or DEFAULT_COLORS["color2"]; self.params = params - + if not self.params['percentbeveled']: self.params['percentbeveled'] = DEFAULT_BEVEL_PERCENT + self._bevelvalues = [ + "flatout", "flatinner", "evenlyframed", "biginner", + "bigouter", "dramaticflatout", "dramaticflatinner", + ] def newfilename(self): return "{}{}-{}_{}_{}.{}".format( self.tag, @@ -133,6 +144,7 @@ class Gradient: '-size', "{}x{}".format(self.params["width"],self.params["height"]) ]) + if self.params['rotate']: cmd.extend(["-rotate", self.params["rotate"]]) if self.params['tilt']: cmd.extend(["-distort","SRT",self.params['tilt']]) if self.params['flip'] == "true": cmd.append("-flip") @@ -192,23 +204,25 @@ class Gradient: cmd.append(os.path.join(self.directory,self.filename)); self._call_cmd(cmd) - def _make_bevel(self): - def get_bevelvalue(key, bevpercentval): - bevel_args = BEVELVALUES[key] - bevel_args.insert(1, bevpercentval) - return bevel_args - if self.params['percentbeveled']: - w, h = map(int, (self.params['width'], self.params['height'])) - if h >= w: - bevpercentval = str(int(self.params['percentbeveled'])*0.005*int(h)) - else: - bevpercentval = str(int(self.params['percentbeveled'])*0.005*int(w)) + def _get_bevelvalue(self): + w, h = map(int, (self.params['width'], self.params['height'])) + if h >= w: + bevpercentval = str(int(self.params['percentbeveled'])*0.005*int(h)) else: - bevpercentval = BEVEL_DEFAULT - - bevel = get_bevelvalue(self.params['bevel'], bevpercentval) + bevpercentval = str(int(self.params['percentbeveled'])*0.005*int(w)) + return { + "flatout": ["-s",bevpercentval,"-m","outer"], + "flatinner": ["-s",bevpercentval,"-m","inner"], + "evenlyframed": ["-s ",bevpercentval,"-m", "split"], + "biginner": ["-s",bevpercentval,"-m","outer","-c","50","-b","red","-a","25"], + "bigouter": ["-s",bevpercentval,"-m","split","-c","50","-b","red","-a","25"], + "dramaticflatout": ["-s",bevpercentval,"-m","outer","-a","25","-b","blue"], + "dramaticflatinner": ["-s",bevpercentval,"-m","outer","-a","25","-b","blue"], + }[self.params['bevel']] + + def _make_bevel(self): cmd = [BEVELBORDER] - cmd += bevel + cmd += self._get_bevelvalue() cmd += [ os.path.join(self.directory,self.filename), os.path.join(self.directory, self.filename) ] self._call_cmd(cmd) @@ -216,26 +230,9 @@ class Gradient: self.filename = self.newfilename() self.filepath = os.path.join(self.directory, self.filename) self._build_cmd() - if self.params['bevel'] in BEVELVALUES: + if self.params['bevel'] in self._bevelvalues: self._make_bevel() -TEST_FORM = { - "width" : "200", - "color1" : "#ffdead", - "color2" : "blue", - "stripes" : "true", - "stripenumber" : "20", - "gradienttype" : "radial", - "stripeintensity" : "20", - "halftone" : "checkeredfade", - "percentbeveled" : "30", - "flip" : "true", - "bevel" : "flatout", - "rotate" : "20", - "height" : "200", - "filetype" : "jpg", - "username" : "whatever" -} if __name__ == "__main__": g = Gradient(TEST_FORM); g.create(); diff --git a/pbserver.py b/pbserver.py index 6712b76..9f2a209 100755 --- a/pbserver.py +++ b/pbserver.py @@ -4,6 +4,8 @@ from bottle import route, run, post, request from gradient import Gradient from imgrid import Imgrid from breaker import Breaker +from pattern import Pattern + from s3config import AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, BUCKET_NAME import os @@ -115,8 +117,12 @@ def gradient(): im.create(); return return_image(im) except Exception as e: - sys.stderr.write(str(e)) + sys.stderr.write("imgradient failure\n") + sys.stderr.write("params:\n") + for i in request.forms: + sys.stderr.write("{}:{}\n".format(i, request.forms[i])) raise; + return json.dumps({ 'error' : 'Request could not be processed' }) @post('/im/api/imgrid') def imgrid(): @@ -143,4 +149,19 @@ def breaker(): sys.stderr.write(str(e)) return json.dumps({ 'error' : 'Request could not be processed' }) +@post('/im/api/impattern') +def pattern(): + try: + im = Pattern(request.forms) + im.create(); + return return_image(im, im.params['url']) + except Exception as e: + sys.stderr.write(str(e)) + sys.stderr.write("imgradient failure\n") + sys.stderr.write("params:\n") + for i in request.forms: + sys.stderr.write("{}:{}\n".format(i, request.forms[i])) + raise; + return json.dumps({ 'error' : 'Request could not be processed' }) + run(host='0.0.0.0', server='flup', port=8999, debug=True) -- cgit v1.2.3-70-g09d2