diff --git a/pillar/application/__init__.py b/pillar/application/__init__.py index b8e0082a..f2fc90a4 100644 --- a/pillar/application/__init__.py +++ b/pillar/application/__init__.py @@ -199,6 +199,7 @@ from modules import file_storage from modules import users from modules import nodes from modules import latest +from modules import blender_cloud app.register_blueprint(encoding, url_prefix='/encoding') app.register_blueprint(blender_id, url_prefix='/blender_id') @@ -206,5 +207,6 @@ projects.setup_app(app, url_prefix='/p') local_auth.setup_app(app, url_prefix='/auth') file_storage.setup_app(app, url_prefix='/storage') latest.setup_app(app, url_prefix='/latest') +blender_cloud.setup_app(app, url_prefix='/bcloud') users.setup_app(app) nodes.setup_app(app) diff --git a/pillar/application/modules/blender_cloud.py b/pillar/application/modules/blender_cloud.py new file mode 100644 index 00000000..27deeecb --- /dev/null +++ b/pillar/application/modules/blender_cloud.py @@ -0,0 +1,26 @@ +from flask import Blueprint, request +from eve.methods.get import get +from eve.utils import config as eve_config + +from application import utils + +TEXTURE_LIBRARY_QUERY_ARGS = { + eve_config.QUERY_PROJECTION: utils.dumps({ + 'name': 1, 'url': 1, 'permissions': 1, 'node_types.name': 1,}), + eve_config.QUERY_SORT: utils.dumps([('name', 1)]), + 'max_results': 'null',} + +blueprint = Blueprint('blender_cloud', __name__) + + +@blueprint.route('/texture-libraries') +def texture_libraries(): + # Use Eve method so that we get filtering on permissions for free. + request.args = TEXTURE_LIBRARY_QUERY_ARGS + projects = get('projects', {'node_types.name': 'texture'}) + + return utils.jsonify(projects) + + +def setup_app(app, url_prefix): + app.register_blueprint(blueprint, url_prefix=url_prefix)