summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/db.py6
-rwxr-xr-xlib/pb/generate.py6
-rw-r--r--lib/server.py23
3 files changed, 31 insertions, 4 deletions
diff --git a/lib/db.py b/lib/db.py
index a236344..6a7e424 100644
--- a/lib/db.py
+++ b/lib/db.py
@@ -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