diff options
| -rw-r--r-- | lib/db.py | 6 | ||||
| -rwxr-xr-x | lib/pb/generate.py | 6 | ||||
| -rw-r--r-- | lib/server.py | 23 |
3 files changed, 31 insertions, 4 deletions
@@ -2,6 +2,7 @@ """all database connections and logic goes here""" from config import DB_HOST, DB_USER, DB_PASSWORD, DB_NAME import time, sys +import simplejson as json from sqlalchemy import Column, Integer, LargeBinary, String, create_engine, sql from sqlalchemy.ext.declarative import declarative_base @@ -37,6 +38,11 @@ class Db(object): )) self.Session = sessionmaker(bind=engine) + def search(self, **kwargs): + session = self.Session() + results = session.query(ImCmd).filter_by(**kwargs).all() + return map(lambda n: { "tag": n.tag, "data": json.loads(n.dataobj) }, results) + def insert_cmd(self, **kwargs): try: session = self.Session() diff --git a/lib/pb/generate.py b/lib/pb/generate.py index 31530d2..e915da9 100755 --- a/lib/pb/generate.py +++ b/lib/pb/generate.py @@ -107,10 +107,10 @@ class PbGenerate(Pb): """Used for the database tag column. Allows for tracking of the type of overlay method used.""" self.tag = _DEFAULT_TAG - if self.params.transparent: - self.tag = str(self.params.transparent) if self.params.background: - self.tag = str(self.params.compose) + self.tag = "%s:%s" % (self.tag, str(self.params.compose)) + elif self.params.transparent: + self.tag = "%s:%s" % (self.tag, "transparent") self.filename, self.filepath = self._filename_filepath_create( url=self.params.url['url'], extension=self.params.format diff --git a/lib/server.py b/lib/server.py index df6af4f..5c0df9b 100644 --- a/lib/server.py +++ b/lib/server.py @@ -1,13 +1,15 @@ """All webserver logic lives here, including routes""" -from flask import Flask +from flask import Flask, Response from flask import request, jsonify import sys, os, re import cherrypy from paste.translogger import TransLogger +import simplejson as json sys.path.append("./lib") from pb import * +from db import Db from param import BadParamError from config import SERVER_HOST, SERVER_PORT @@ -66,6 +68,25 @@ class Server(object): 'imgradient' : 'PbGradient', 'landscape' : 'PbLandscape', } + @self.app.route('/im/data', methods=['GET']) + def get_data(): + args_dict = request.args.to_dict() + query_dict = {} + for elem in ["newfile", "time"]: + if args_dict.get(elem): + query_dict[elem] = args_dict.get(elem) + if args_dict: + try: + db = Db() + return Response( + #flask prevents from returning arrays, so we need the json module + json.dumps(db.search(**query_dict)), + mimetype='application/json' + ) + except Exception as e: + return str(e) + else: + raise InvalidUsage('Improper Usage', status_code=410) def _find_class_by_name(self, pb_classname): pb_classname = self._classname_aliases.get(pb_classname, None) or pb_classname |
