Assets

Additional extensions and functions for the flask_assets module.

invenio_ext.assets.command

Flask-Script command that deals with assets.

Documentation is on: webassets webassets:script-commands

# How to install it
from flask_script import Manager
manager = Manager()
manager.add_command("assets", command)
invenio_ext.assets.registry

Flask-Registry registry that handles the bundles. Use it directly as it’s lazy loaded.

invenio_ext.assets.setup_app(app)

Initialize Assets extension.

Use the ASSETS_BUNDLES_DIR option to change the name of the directory where the assets are generated (by default gen).

Parameters:app – Flask application
class invenio_ext.assets.Bundle(*contents, **options)

Bases: webassets.bundle.Bundle

Bundle extension with a name and bower dependencies.

The name is only used for the requirements from the templates and the weight does the bundle ordering.

The bower dependencies are used to generate a bower.json file.

has_filter(*filters)

Tell whether a given filter is set up for this bundle.

class invenio_ext.assets.RequireJSFilter(*args, **kwargs)

Bases: webassets.filter.requirejs.RequireJSFilter

Optimize AMD-style modularized JavaScript into a single asset.

Adds support for exclusion of files already in defined in other bundles.

method = False
setup()

Setup filter (only called when filter is actually used).

class invenio_ext.assets.CleanCSSFilter(**kwargs)

Bases: webassets.filter.ExternalTool

Minify css using cleancss.

Implements opener capable of rebasing relative CSS URLs against COLLECT_STATIC_ROOT.

input(_in, out, **kw)

Input filtering.

method = u'open'
name = u'cleancssurl'
open(out, source_path, **kw)

Open source.

options = {u'binary': u'CLEANCSS_BIN'}
output(_in, out, **kw)

Output filtering.

setup()

Initialize filter just before it will be used.

Flask-Script commands

Command-line tools for assets.

class invenio_ext.assets.commands.AssetsCommand(assets_env=None, impl=<class 'flask_assets.FlaskArgparseInterface'>, log=None)

Bases: flask_assets.ManageAssets

Command-line operation for assets.

run(args)

Run the command-line.

It loads the bundles from the bundles registry.

class invenio_ext.assets.commands.BowerCommand(func=None)

Bases: flask_script.commands.Command

Command-line operation for bower.

option_list = (<flask_script.commands.Option object at 0x7ffadceb7810>, <flask_script.commands.Option object at 0x7ffadceb78d0>, <flask_script.commands.Option object at 0x7ffadceb7910>)
run(filename=None, override=False, output_file=None)

Generate a bower.json file.

It comes with default values for the ignore. Name and version are set to be invenio’s.

Jinja2 extensions

Custom Jinja2 extensions.

class invenio_ext.assets.extensions.BundleExtension(environment)

Bases: jinja2.ext.Extension

Jinja extension for css and js bundles.

Definition of the required bundles.

{%- bundles "jquery.js", "invenio.css" -%}
{%- bundle "require.js" -%}

Usage.

{%- for bundle in get_bundle('js') %}
  <!-- {{ bundle.output }} -->
  {%- assets bundle %}
    <script type="text/javascript" src="{{ ASSET_URL }}"></script>
  {%- endassets %}
{%- endfor %}
</body>
</html>
identifier = 'invenio_ext.assets.extensions.BundleExtension'
classmethod inject()

Inject the get_bundle function into the jinja templates.

classmethod install(app)

Install the extension into the application.

parse(parser)

Parse the bundles block and feed the bundles environment.

Bundles entries are replaced by an empty string.

classmethod storage()

Store used bundles on request context stack.

tags = set(['bundles', 'bundle'])
class invenio_ext.assets.extensions.InvenioResolver

Bases: flask_assets.FlaskResolver

Custom resource resolver for webassets.

resolve_source(ctx, item)

Return the absolute path of the resource.

resolve_source_to_url(ctx, filepath, item)

Return the url of the resource.

Displaying them as is in debug mode as the web server knows where to search for them.

webassets.env.Resolver.resolve_source_to_url()

search_for_source(ctx, item)

Return absolute path of the resource.

webassets.env.Resolver.search_for_source()

Parameters:
  • ctx – environment
  • item – resource filename
Returns:

absolute path

Registry

Registry for bundles.

invenio_ext.assets.registry.bundles

Flask-Registry registry that handles the bundles. Use it directly as it’s lazy loaded.

Wrappers

Custom modified classes.

class invenio_ext.assets.wrappers.Bundle(*contents, **options)

Bases: webassets.bundle.Bundle

Bundle extension with a name and bower dependencies.

The name is only used for the requirements from the templates and the weight does the bundle ordering.

The bower dependencies are used to generate a bower.json file.

has_filter(*filters)

Tell whether a given filter is set up for this bundle.

class invenio_ext.assets.wrappers.BundlesAutoDiscoveryRegistry(module_name=None, app=None, with_setup=False, silent=False)

Bases: flask_registry.registries.modulediscovery.ModuleAutoDiscoveryRegistry

Registry that searches for bundles.

Its registry is a list of the package name and the bundle itself. This way you can keep track of where a bundle was loaded from.

class invenio_ext.assets.wrappers.CleanCSSFilter(**kwargs)

Bases: webassets.filter.ExternalTool

Minify css using cleancss.

Implements opener capable of rebasing relative CSS URLs against COLLECT_STATIC_ROOT.

input(_in, out, **kw)

Input filtering.

method = u'open'
name = u'cleancssurl'
open(out, source_path, **kw)

Open source.

options = {u'binary': u'CLEANCSS_BIN'}
output(_in, out, **kw)

Output filtering.

setup()

Initialize filter just before it will be used.

class invenio_ext.assets.wrappers.RequireJSFilter(*args, **kwargs)

Bases: webassets.filter.requirejs.RequireJSFilter

Optimize AMD-style modularized JavaScript into a single asset.

Adds support for exclusion of files already in defined in other bundles.

method = False
setup()

Setup filter (only called when filter is actually used).