def includeme(config): """pyramid include. declare the add_thumb_view""" here = os.path.dirname(__file__) settings = config.registry.settings config_dir = settings.get('garasu_webassets.config', '{}/configs'.format(here)) LOG.debug(config_dir) # config_dir = AssetResolver(None).resolve(config_dir).abspath() asset_dir = settings.get('garasu_webassets.assets', '{}/assets'.format(here)) LOG.debug(asset_dir) # asset_dir = AssetResolver(None).resolve(asset_dir).abspath() env = Environment(directory=asset_dir, url=settings['garasu_webassets.url']) env.manifest = settings['garasu_webassets.manifest'] env.debug = asbool(settings['garasu_webassets.debug']) env.cache = asbool(settings['garasu_webassets.cache']) env.auto_build = asbool(settings['garasu_webassets.auto_build']) def text(value): if type(value) is six.binary_type: return value.decode('utf-8') else: return value def yaml_stream(fname, mode): if path.exists(fname): return open(fname, mode) raise FileNotFoundError fin = fileinput.input('/'.join([config_dir, settings['garasu_webassets.bundles']]), openhook=yaml_stream) with closing(fin): lines = [text(line).rstrip() for line in fin] stream_yaml = six.StringIO('\n'.join(lines)) loader = YAMLLoader(stream_yaml) result = loader.load_bundles() env.register(result) # for item in env: # LOG.debug(item.output) # path_file = '/'.join([public_dir, item.output]) # src_file = '/'.join([asset_dir, item.output]) # shutil.copy(src_file, path_file) def _get_assets(request, *args, **kwargs): bundle = Bundle(*args, **kwargs) with bundle.bind(env): urls = bundle.urls() return urls config.add_request_method(_get_assets, 'web_assets') def _get_assets_env(request): return env config.add_request_method(_get_assets_env, 'web_env', reify=True)
def get_webassets_env(conf): '''Get a preconfigured WebAssets environment''' # Configure webassets assets_environment = AssetsEnvironment(conf.get('static_files_dir', DEFAULT_STATIC), '/') assets_environment.debug = conf.get('debug', False) assets_environment.auto_build = conf.get('debug', False) assets_environment.config['less_paths'] = ( 'bower/bootstrap/less', 'bower/etalab-assets/less', 'bower/bootstrap-markdown/less', ) # Load bundle from yaml file loader = YAMLLoader(resource_stream(__name__, '../assets.yaml')) bundles = loader.load_bundles() for name, bundle in bundles.items(): assets_environment.register(name, bundle) return assets_environment
def compressFile(f, webFilters): filePath = os.path.join(webFolder, f) baseName = os.path.basename(filePath) prefix = f[0:len(f) - len(baseName)] fn = os.path.splitext(baseName) newFileName = fn[0] + '.%(version)s' + fn[1] env = Environment("") env.auto_build = False env.url_expire = True tmpFile = os.path.join(tempFolder, newFileName) env.url_mapping = {tempFolder: ''} bundle = Bundle(filePath, filters=webFilters, output=tmpFile) env.add(bundle) bundle.build() vfn = bundle.urls()[0][1:] if (vfn.index("?") > 0): vfn = vfn[0:vfn.index("?")] #print(prefix, vfn) zf.write(os.path.join(tempFolder, vfn), prefix + vfn) return prefix + vfn
#!/usr/bin/env python from os import path from webassets import Bundle, Environment env = Environment(path.join(path.dirname(__file__), 'static'), '/stylesheets') # App Engine doesn't support automatic rebuilding. env.auto_build = False # This file needs to be shipped with your code. env.manifest = 'file' bundle = Bundle('in.css', filters="cssmin", output="out.css") env.add(bundle) if __name__== "__main__": # If this file is called directly, do a manual build. bundle.build()
AUTH_USER_MODEL = 'UserModel' AUTH_USER_COLLECTION = 'accounts' # --// Web Assets settings \\-- # Put import here to avoid losing data in recursive import import assets ASSETS = WAEnvironment(STATIC_ROOT, '/static') # Make sure you've install sass # $ sudo apt-get install ruby # $ sudo gem install sass ASSETS.config['SASS_BIN'] = '/usr/local/bin/sass' for k, v in assets.bundles.iteritems(): ASSETS.register(k, v) if DEBUG: ASSETS.auto_build = True # See PEP 391 and logconfig for formatting help. LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'main_formatter': { 'format': '%(levelname)s:%(name)s: %(message)s ' '(%(asctime)s; %(filename)s:%(lineno)d)', 'datefmt': "%Y-%m-%d %H:%M:%S", }, 'console_formatter': { 'format': '%(message)s', },
import os from werkzeug.wrappers import Request, Response from werkzeug.wsgi import SharedDataMiddleware from webassets import Environment, Bundle, ExternalAssets environment = Environment('static', '/static') environment.versions = 'hash' manifest_path = os.path.realpath(os.path.join(os.path.dirname(__file__), '.static-manifest')) environment.manifest = 'file://%s' % manifest_path environment.cache = False environment.auto_build = True environment.url = '//0.0.0.0:5001/static/' #environment.debug = True #less = Bundle('less/main.less', filters='less', output='gencss/less.css') css = Bundle( Bundle('less/main.less', filters='less', output='gencss/less.css'), 'css/main.css', 'css/sub/sub-main.css', filters='cssrewrite', output='gencss/css-merged.%(version)s.css' ) external_solo = ExternalAssets('map.png') external_main = ExternalAssets( 'css/img/*',
#!/usr/bin/env python from os import path from webassets import Bundle, Environment env = Environment(path.join(path.dirname(__file__), 'static'), '/stylesheets') # App Engine doesn't support automatic rebuilding. env.auto_build = False # This file needs to be shipped with your code. env.manifest = 'file' bundle = Bundle('in.css', filters="cssmin", output="out.css") env.add(bundle) if __name__ == "__main__": # If this file is called directly, do a manual build. bundle.build()