def gen_assets_url(assets): try: names = [split_namespec(a)[0] for a in assets] except ValueError: abort(400) is_js = reduce(lambda status, name: status and name.endswith('.js'), names, True) is_css = reduce(lambda status, name: status and name.endswith('.css'), names, True) output_name = asset_key(assets) gendir = os.path.join(current_app.static_folder, 'gen') if not os.path.exists(gendir): os.mkdir(gendir) # The file extensions here are for upstream servers to serve the correct content type: if is_js: # TODO: Move this !jquery.js to somewhere more relevant bundle = Bundle(assets_repo.require(*(['!jquery.js'] + assets)), output='gen/' + output_name + '.js', filters='uglipyjs') elif is_css: bundle = Bundle(assets_repo.require(*assets), output='gen/' + output_name + '.css', filters=['cssrewrite', 'cssmin']) else: abort(400) bundle.env = current_app.assets return bundle.urls()[0]
def gen_assets_url(assets: List[str]) -> str: """Create an asset bundle and return URL (helper for :func:`ext_assets`).""" # TODO: write test for this function try: names = [split_namespec(a)[0] for a in assets] except ValueError: abort(400) is_js = all(name.endswith('.js') for name in names) is_css = all(name.endswith('.css') for name in names) output_name = asset_key(assets) gendir = os.path.join(current_app.static_folder, 'gen') # type: ignore[arg-type] if not os.path.exists(gendir): os.mkdir(gendir) # File extensions are for upstream servers to serve the correct content type: if is_js: # TODO: Move this !jquery.js to somewhere more relevant bundle = Bundle( assets_repo.require(*(['!jquery.js'] + assets)), output='gen/' + output_name + '.js', filters='uglipyjs', ) elif is_css: bundle = Bundle( assets_repo.require(*assets), output='gen/' + output_name + '.css', filters=['cssrewrite', 'cssmin'], ) else: abort(400) bundle.env = current_app.assets return bundle.urls()[0]