summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--photoblaster/server.py28
1 files changed, 13 insertions, 15 deletions
diff --git a/photoblaster/server.py b/photoblaster/server.py
index 4a80fd0..081e16a 100644
--- a/photoblaster/server.py
+++ b/photoblaster/server.py
@@ -9,8 +9,7 @@ from paste.translogger import TransLogger
import simplejson as json
import urllib2
-from photoblaster.modules import PbGenerate, PbGrid, PbBreaker, PbPattern,\
- PbLandscape, PbGradient, PbProcessError, Pb
+from photoblaster.modules import Modules, PbProcessError
from photoblaster.db.models.imcmd import ImCmd
from photoblaster.param import BadParamError
from photoblaster.config import SERVER_HOST, SERVER_PORT, STATIC_FOLDER, \
@@ -52,12 +51,12 @@ GALLERY_TAG_TRANS = {
# and this jsonp thing
_CLASSNAME_ALIASES = {
- 'generate': 'PbGenerate',
- 'imgrid': 'PbGrid',
- 'imbreak': 'PbBreaker',
- 'impattern': 'PbPattern',
- 'imgradient': 'PbGradient',
- 'landscape': 'PbLandscape',
+ 'generate': 'pbgenerate',
+ 'imgrid': 'pbgrid',
+ 'imbreak': 'pbbreaker',
+ 'impattern': 'pbpattern',
+ 'imgradient': 'pbgradient',
+ 'landscape': 'pblandscape',
}
@@ -82,6 +81,7 @@ class Server(object):
"""Main server class"""
def __init__(self):
self.app = Flask(__name__, static_folder=STATIC_FOLDER)
+ self.modules = Modules()
self._wsgi_server = None
self._classname_aliases = _CLASSNAME_ALIASES
@@ -128,7 +128,6 @@ class Server(object):
# send_static_file will guess the correct MIME type
return self.app.send_static_file(path)
-
@self.app.route('/proxy', methods=['GET'])
def proxy_image():
url = request.args.get("url")
@@ -166,7 +165,8 @@ class Server(object):
search_params = {"deleted": None}
qs = []
if request.args.get('tag'):
- search_params['tag'] = GALLERY_TAG_TRANS.get(request.args['tag'], request.args['tag'])
+ search_params['tag'] = GALLERY_TAG_TRANS.get(
+ request.args['tag'], request.args['tag'])
qs.append("tag=" + request.args['tag'])
if request.args.get('name'):
search_params['name'] = request.args['name']
@@ -217,12 +217,10 @@ class Server(object):
return send_from_directory(WORKING_DIR, path)
def _find_class_by_name(self, pb_classname):
- pb_classname = self._classname_aliases.get(pb_classname, None) \
- or pb_classname
+ pb_classname = self._classname_aliases.get(pb_classname, None) or \
+ pb_classname
try:
- return filter(
- lambda c: c.__name__ == pb_classname, Pb.__subclasses__()
- )[0]
+ return self.modules.get_module(pb_classname)
except IndexError:
raise InvalidUsage('No such api', status_code=410)