From 96ee22230a1c17d4cab980fea5541f522fb9d02e Mon Sep 17 00:00:00 2001 From: Sergey Motornyuk Date: Sat, 4 May 2019 14:28:34 +0300 Subject: [PATCH] Add config options/remove comments --- .gitignore | 3 --- ckan/config/deployment.ini_tmpl | 6 +++++ ckan/config/middleware/flask_app.py | 26 ++++++++++++------- ckan/lib/jinja_extensions.py | 4 --- ckan/lib/webassets_tools.py | 26 +++++++++++++++++-- ckan/templates/package/new_resource.html | 1 - .../templates/package/resource_edit_base.html | 1 - ckan/templates/package/resource_views.html | 1 - ckan/templates/package/resources.html | 1 - ckan/templates/page.html | 5 ---- .../templates/datatables/datatables_view.html | 1 - .../v15_fanstatic/templates/base.html | 11 ++++---- .../templates/snippets/package_item.html | 3 +-- .../templates/snippets/package_item.html | 1 - .../templates/snippets/package_item.html | 2 -- .../templates/snippets/package_item.html | 3 --- .../theme/templates/recline_view.html | 1 - .../stats/templates/ckanext/stats/index.html | 1 - .../textview/theme/templates/text_view.html | 1 - 19 files changed, 52 insertions(+), 46 deletions(-) diff --git a/.gitignore b/.gitignore index dbc4ad040ac..39267c75f22 100644 --- a/.gitignore +++ b/.gitignore @@ -31,9 +31,6 @@ fl_notes.txt # custom style ckan/public/base/less/custom.less -# webassets -ckan/public/webassets - # nosetest coverage output .coverage htmlcov/* diff --git a/ckan/config/deployment.ini_tmpl b/ckan/config/deployment.ini_tmpl index 0ed97f60336..5192b5125f7 100644 --- a/ckan/config/deployment.ini_tmpl +++ b/ckan/config/deployment.ini_tmpl @@ -160,6 +160,12 @@ ckan.feeds.author_link = #ckan.max_resource_size = 10 #ckan.max_image_size = 2 +## Webassets Settings +#ckan.webassets.use_x_sendfile = false +#ckan.webassets.external = false +#ckan.webassets.path = /var/lib/ckan/webassets + + ## Datapusher settings # Make sure you have set up the DataStore diff --git a/ckan/config/middleware/flask_app.py b/ckan/config/middleware/flask_app.py index fae976093b6..cc4d8ec207a 100644 --- a/ckan/config/middleware/flask_app.py +++ b/ckan/config/middleware/flask_app.py @@ -31,7 +31,8 @@ from ckan.common import config, g, request, ungettext import ckan.lib.app_globals as app_globals import ckan.lib.plugins as lib_plugins - +import ckan.plugins.toolkit as toolkit +from ckan.lib.webassets_tools import get_webassets_path from ckan.plugins import PluginImplementations from ckan.plugins.interfaces import IBlueprint, IMiddleware, ITranslation @@ -41,7 +42,6 @@ set_controller_and_action ) -import ckan.lib.plugins as lib_plugins import logging from logging.handlers import SMTPHandler log = logging.getLogger(__name__) @@ -185,14 +185,7 @@ def hello_world_post(): return 'Hello World, this was posted to Flask' # WebAssets - public_folder = config.get('ckan.base_public_folder') - webassets_folder = os.path.join( - os.path.dirname(ckan.__file__), public_folder, 'webassets' - ) - - @app.route('/webassets/') - def webassets(path): - return send_from_directory(webassets_folder, path) + _setup_webassets(app) # Auto-register all blueprints defined in the `views` folder _register_core_blueprints(app) @@ -504,3 +497,16 @@ def filter(self, log_record): context_provider = ContextualFilter() app.logger.addFilter(context_provider) app.logger.addHandler(mail_handler) + + +def _setup_webassets(app): + app.use_x_sendfile = toolkit.asbool( + config.get('ckan.webassets.use_x_sendfile') + ) + + if not toolkit.asbool(config.get('ckan.webassets.external')): + webassets_folder = get_webassets_path() + + @app.route('/webassets/') + def webassets(path): + return send_from_directory(webassets_folder, path) diff --git a/ckan/lib/jinja_extensions.py b/ckan/lib/jinja_extensions.py index e58e44f96b2..7221dbe1ae5 100644 --- a/ckan/lib/jinja_extensions.py +++ b/ckan/lib/jinja_extensions.py @@ -324,10 +324,6 @@ class ResourceExtension(BaseExtension): @classmethod def _call(cls, args, kwargs): - log.warn( - '`resource` tag is deprecated. ' - 'Use `assets`' - ' instead') assert len(args) == 1 assert len(kwargs) == 0 h.include_resource(args[0], **kwargs) diff --git a/ckan/lib/webassets_tools.py b/ckan/lib/webassets_tools.py index ec3ec63447b..8f256447db8 100644 --- a/ckan/lib/webassets_tools.py +++ b/ckan/lib/webassets_tools.py @@ -2,14 +2,15 @@ import logging import os +import tempfile from markupsafe import Markup - from webassets import Environment from webassets.loaders import YAMLLoader from ckan.common import config, g + logger = logging.getLogger(__name__) env = None @@ -32,6 +33,7 @@ def create_library(name, path): # with the same name twice. For now, let's just pop existing # bundle and avoid name-conflicts # TODO: make PR into webassets with preferable solution + # Issue: https://github.com/miracle2k/webassets/issues/519 for name, bundle in bundles.items(): env._named_bundles.pop(name, None) env.register(name, bundle) @@ -42,13 +44,14 @@ def create_library(name, path): def webassets_init(): global env + static_path = get_webassets_path() + public = config.get(u'ckan.base_public_folder') public_folder = os.path.abspath(os.path.join( os.path.dirname(__file__), u'..', public)) base_path = os.path.join(public_folder, u'base') - static_path = os.path.join(public_folder, u'webassets') env = Environment() env.directory = static_path @@ -137,3 +140,22 @@ def render_assets(type_): tags = u'\n'.join([_to_tag(asset, type_) for asset in assets[type_]]) collection[:] = [] return Markup(tags) + + +def get_webassets_path(): + webassets_path = config.get('ckan.webassets.path') + + if not webassets_path: + storage_path = config.get( + 'ckan.storage_path' + ) or tempfile.gettempdir() + + if storage_path: + webassets_path = os.path.join(storage_path, 'webassets') + + if not webassets_path: + raise RuntimeError( + 'Either `ckan.webassets.path` or `ckan.storage_path` ' + 'must be specified' + ) + return webassets_path diff --git a/ckan/templates/package/new_resource.html b/ckan/templates/package/new_resource.html index dc868081050..370df275a36 100644 --- a/ckan/templates/package/new_resource.html +++ b/ckan/templates/package/new_resource.html @@ -20,6 +20,5 @@ {% block scripts %} {{ super() }} - {#% resource 'vendor/fileupload' %#} {% asset 'vendor/fileupload' %} {% endblock %} diff --git a/ckan/templates/package/resource_edit_base.html b/ckan/templates/package/resource_edit_base.html index 2c4ee42400e..7803d1f4ea3 100644 --- a/ckan/templates/package/resource_edit_base.html +++ b/ckan/templates/package/resource_edit_base.html @@ -37,6 +37,5 @@

{% block form_title %}{{ _('Edit resource') }}{% endblo {% block scripts %} {{ super() }} - {#% resource 'vendor/fileupload' %#} {% asset 'vendor/fileupload' %} {% endblock %} diff --git a/ckan/templates/package/resource_views.html b/ckan/templates/package/resource_views.html index 098dcc2ba11..de01f4fe9a4 100644 --- a/ckan/templates/package/resource_views.html +++ b/ckan/templates/package/resource_views.html @@ -17,7 +17,6 @@ {% endfor %} - {#% resource 'vendor/reorder' %#} {% asset 'vendor/reorder' %} {% endblock %} diff --git a/ckan/templates/package/resources.html b/ckan/templates/package/resources.html index 3ed8e71e450..c3ef2fad904 100644 --- a/ckan/templates/package/resources.html +++ b/ckan/templates/package/resources.html @@ -26,7 +26,6 @@ {% block scripts %} {{ super() }} {% if has_reorder %} - {#% resource 'vendor/reorder' %#} {% asset 'vendor/reorder' %} {% endif %} {% endblock %} diff --git a/ckan/templates/page.html b/ckan/templates/page.html index 077ebb042ad..44c421cb88f 100644 --- a/ckan/templates/page.html +++ b/ckan/templates/page.html @@ -128,14 +128,9 @@

My page content

{%- endblock -%} {%- block scripts %} - {#% resource 'base/main' %#} {% asset 'base/main' %} - - {#% resource 'base/ckan' %#} {% asset 'base/ckan' %} - {% if g.tracking_enabled %} - {#% resource 'base/tracking.js' %#} {% asset 'base/tracking' %} {% endif %} {{ super() }} diff --git a/ckanext/datatablesview/templates/datatables/datatables_view.html b/ckanext/datatablesview/templates/datatables/datatables_view.html index 47ab677fb8b..93fe7b979a3 100644 --- a/ckanext/datatablesview/templates/datatables/datatables_view.html +++ b/ckanext/datatablesview/templates/datatables/datatables_view.html @@ -53,7 +53,6 @@ - {#% resource 'ckanext-datatablesview/main' %#} {% asset 'ckanext-datatablesview/main' %} {% endblock %} diff --git a/ckanext/example_theme_docs/v15_fanstatic/templates/base.html b/ckanext/example_theme_docs/v15_fanstatic/templates/base.html index 18f631b9974..2d717e4b4fd 100644 --- a/ckanext/example_theme_docs/v15_fanstatic/templates/base.html +++ b/ckanext/example_theme_docs/v15_fanstatic/templates/base.html @@ -3,12 +3,11 @@ {% block styles %} {{ super() }} - {# Import example_theme.css using Fanstatic. - 'example_theme/' is the name that the example_theme/fanstatic directory - was registered with when the toolkit.add_resource() function was called. - 'example_theme.css' is the path to the CSS file, relative to the root of - the fanstatic directory. #} - {#% resource 'example_theme/example_theme.css' %#} + {# Import example_theme.css using Webassets. 'example_theme/' is + the name that the example_theme/fanstatic directory was registered + with when the toolkit.add_resource() function was called. + 'example_theme' is the name to the Webassets bundle file, + registered inside webassets.yml file. #} {% asset 'example_theme/example_theme' %} {% endblock %} diff --git a/ckanext/example_theme_docs/v16_initialize_a_javascript_module/templates/snippets/package_item.html b/ckanext/example_theme_docs/v16_initialize_a_javascript_module/templates/snippets/package_item.html index 9807ea389a7..b453772636a 100644 --- a/ckanext/example_theme_docs/v16_initialize_a_javascript_module/templates/snippets/package_item.html +++ b/ckanext/example_theme_docs/v16_initialize_a_javascript_module/templates/snippets/package_item.html @@ -3,10 +3,9 @@ {% block content %} {{ super() }} - {# Use Fanstatic to include our custom JavaScript module. + {# Use Webassets to include our custom JavaScript module. A