From 03f45bb4225740f2ebe4adfd8de24f67d33ee0e3 Mon Sep 17 00:00:00 2001 From: yo mama Date: Thu, 30 Apr 2015 15:08:01 -0700 Subject: good --- gradient.py | 103 +++++++++++++++++++++--------------------------------------- 1 file changed, 35 insertions(+), 68 deletions(-) (limited to 'gradient.py') diff --git a/gradient.py b/gradient.py index 991f853..68de55b 100755 --- a/gradient.py +++ b/gradient.py @@ -5,26 +5,11 @@ from subprocess import call import simplejson as json import sys import os -import db import sha +import lib.utils as utils +from config import * -#{{{ logging -#import logging -#logger = logging.getLogger('gradient') -#logging.FileHandler('/var/www/cache/gradient.log') -#formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') -#hdlr.setFormatter(formatter) -#logger.addHandler(hdlr) -#logger.setLevel(logging.WARNING) -#}}} -def is_color(s): - if s == "": - return "transparent" - if re.match('(rgba?\([0-9]+,[0-9]+,[0-9]+\))|([a-zA-Z]+)|(\#[A-Ha-h0-9]+)', s): - return s.replace(' ','') - else: - raise ValueError PARAM_LIST = [ "width", "height", "color1", "color2", @@ -40,20 +25,14 @@ PARAM_LIST = [ "gradienttype", "username", ] -BIN_CONVERT = "/usr/bin/convert" -BIN_IDENTIFY = "/usr/bin/identify" -BEVELBORDER = "./bevelborder" DEFAULT_FORMAT = "png" DEFAULT_COLORS = { "color1" : "white", "color2" : "black", }; -#WORKING_DIR = '/tmp' -WORKING_DIR = '/var/www/cache' DEFAULT_WIDTH = "200" DEFAULT_HEIGHT = "200" - DEFAULT_BEVEL_PERCENT = "12"; HALFTONEVALUES = { @@ -65,36 +44,9 @@ 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) - -def is_number(s): - try: - return int(s) - except (ValueError, TypeError): - return False class Gradient: - def __init__(self, form): - self.now = int(time.time()) + def __init__(self, **kwargs): self.tag = "imGradient" self.directory = WORKING_DIR self.commands = [] @@ -103,20 +55,20 @@ class Gradient: params = {} for key in PARAM_LIST: - if key in form: + if key in kwargs: if key in ['color1', 'color2']: - params[key] = is_color(form[key]) + params[key] = utils.is_color(kwargs[key]) else: - params[key] = sanitize(form[key]) + params[key] = utils.sanitize(kwargs[key]) if key in ['rotate','tilt','blurriness','stripenumber','stripeintensity']: - params[key] = params[key] if is_number(params[key]) else "" + params[key] = params[key] if utils.is_number(params[key]) else "" elif key in ['brightness', 'contrast', 'hue']: - if not is_number(params[key]) or params[key] == "100": params[key] = "" + if not utils.is_number(params[key]) or params[key] == "100": params[key] = "" else: params[key] = "" - params['width'] = params['width'] if is_number(params['width']) else DEFAULT_WIDTH - params['height'] = params['height'] if is_number(params['height']) else DEFAULT_HEIGHT + params['width'] = params['width'] if utils.is_number(params['width']) else DEFAULT_WIDTH + params['height'] = params['height'] if utils.is_number(params['height']) else DEFAULT_HEIGHT params["color1"] = params["color1"] or DEFAULT_COLORS["color1"]; params["color2"] = params["color2"] or DEFAULT_COLORS["color2"]; self.params = params @@ -125,25 +77,24 @@ class Gradient: "flatout", "flatinner", "evenlyframed", "biginner", "bigouter", "dramaticflatout", "dramaticflatinner", ] + def newfilename(self): return "{}{}-{}_{}_{}.{}".format( self.tag, self.params['color1'].replace('#','').replace('(','-').replace(')','-'), self.params['color2'].replace('#','').replace('(','-').replace(')','-'), - self.now, + utils.now(), self.params['username'], self.params['filetype'] or DEFAULT_FORMAT, ) - def _call_cmd(self, cmd, error=""): + def _call_cmd(self, cmd): try: - call(cmd) + utils.call_cmd(cmd) self.commands.append(" ".join(cmd)); - except Exception as e: - if error: - sys.stderr.write(error) - else: - sys.stderr.write(str(e)) + except Exception: + raise Exception("Unable to call cmd {}".format(str(cmd))) + def _build_cmd(self): cmd = [BIN_CONVERT] @@ -241,8 +192,24 @@ class Gradient: self._make_bevel() if __name__ == "__main__": - g = Gradient(TEST_FORM); + 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" + } + g = Gradient(**TEST_FORM); g.create(); - print g.now print " ".join(g.commands) print g.filename -- cgit v1.2.3-70-g09d2