From 261f6709a319b8464148a52fb233e7171988ee70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 3 Jun 2015 19:36:38 +0200 Subject: [PATCH] Depend on Flask-Assets 0.10 Compatibility adjustments and version pinning --- setup.py | 2 +- src/octoprint/server/__init__.py | 9 +++++-- src/octoprint/server/util/flask.py | 40 ++++++------------------------ 3 files changed, 16 insertions(+), 35 deletions(-) diff --git a/setup.py b/setup.py index e0ebf435..7fff74ec 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ INSTALL_REQUIRES = [ "Flask-Login==0.2.2", "Flask-Principal==0.3.5", "Flask-Babel==0.9", - "Flask-Assets", + "Flask-Assets==0.10", "pyserial", "netaddr", "watchdog", diff --git a/src/octoprint/server/__init__.py b/src/octoprint/server/__init__.py index 56b2ddd7..fb79db2f 100644 --- a/src/octoprint/server/__init__.py +++ b/src/octoprint/server/__init__.py @@ -731,8 +731,13 @@ class Server(): "css/jquery.fileupload-ui.css", "css/pnotify.min.css" ] - css_app = ["empty"] + dynamic_assets["css"] - less_app = ["empty"] + dynamic_assets["less"] + css_app = list(dynamic_assets["css"]) + if len(css_app) == 0: + css_app = ["empty"] + + less_app = list(dynamic_assets["less"]) + if len(less_app) == 0: + less_app = ["empty"] js_libs_bundle = Bundle(*js_libs, output="webassets/packed_libs.js") if settings().getBoolean(["devel", "webassets", "minify"]): diff --git a/src/octoprint/server/util/flask.py b/src/octoprint/server/util/flask.py index 85c86089..0acdef62 100644 --- a/src/octoprint/server/util/flask.py +++ b/src/octoprint/server/util/flask.py @@ -416,49 +416,25 @@ def get_json_command_from_request(request, valid_commands): class PluginAssetResolver(flask.ext.assets.FlaskResolver): - def split_prefix(self, item): + def split_prefix(self, ctx, item): + app = ctx.environment._app if item.startswith("plugin/"): try: prefix, plugin, name = item.split("/", 2) blueprint = prefix + "." + plugin - directory = flask.ext.assets.get_static_folder(self.env._app.blueprints[blueprint]) + directory = flask.ext.assets.get_static_folder(app.blueprints[blueprint]) item = name - return directory, item + endpoint = blueprint + ".static" + return directory, item, endpoint except (ValueError, KeyError): pass - return flask.ext.assets.FlaskResolver.split_prefix(self, item) + return flask.ext.assets.FlaskResolver.split_prefix(self, ctx, item) - def resolve_output_to_path(self, target, bundle): + def resolve_output_to_path(self, ctx, target, bundle): import os - return os.path.normpath(os.path.join(self.env.directory, target)) - - def resolve_source_to_url(self, filepath, item): - if item.startswith("plugin/"): - try: - prefix, plugin, name = item.split('/', 2) - blueprint = prefix + "." + plugin - - self.env._app.blueprints[blueprint] # keyerror if no module - endpoint = '%s.static' % blueprint - filename = name - except (ValueError, KeyError): - endpoint = 'static' - filename = item - - ctx = None - if not flask._request_ctx_stack.top: - ctx = self.env._app.test_request_context() - ctx.push() - try: - return flask.url_for(endpoint, filename=filename) - finally: - if ctx: - ctx.pop() - - return flask.ext.assets.FlaskResolver.resolve_source_to_url(self, filepath, item) - + return os.path.normpath(os.path.join(ctx.environment.directory, target)) ##~~ plugin assets collector