class InvenioAssets(object): """Invenio asset extension.""" def __init__(self, app=None, **kwargs): """Extension initialization.""" self.env = Environment() self.collect = Collect() if app: self.init_app(app, **kwargs) def init_app(self, app, **kwargs): """Initialize application object.""" self.init_config(app) self.env.init_app(app) self.collect.init_app(app) # TODO: write .bowerrc to app.instance_folder # bower command can by default write to app.instance_folder/bower.json app.extensions['invenio-assets'] = self def init_config(self, app): """Initialize configuration.""" app.config.setdefault("REQUIREJS_BASEURL", app.static_folder) app.config.setdefault("REQUIREJS_CONFIG", 'js/settings.js') app.config.setdefault('COLLECT_STATIC_ROOT', app.static_folder) app.config.setdefault('COLLECT_STORAGE', 'flask_collect.storage.link') def init_cli(self, cli): """Initialize CLI.""" cli.add_command(assets_cmd) cli.add_command(bower) cli.add_command(collect)
class InvenioAssets(object): """Invenio asset extension.""" def __init__(self, app=None, **kwargs): r"""Extension initialization. :param app: An instance of :class:`~flask.Flask`. :param \**kwargs: Keyword arguments are passed to ``init_app`` method. """ self.env = Environment() self.collect = Collect() if app: self.init_app(app, **kwargs) def init_app(self, app, entry_point_group='invenio_assets.bundles', **kwargs): """Initialize application object. :param app: An instance of :class:`~flask.Flask`. :param entry_point_group: A name of entry point group used to load ``webassets`` bundles. .. versionchanged:: 1.0.0b2 The *entrypoint* has been renamed to *entry_point_group*. """ self.init_config(app) self.env.init_app(app) self.collect.init_app(app) if entry_point_group: self.load_entrypoint(entry_point_group) app.extensions['invenio-assets'] = self def init_config(self, app): """Initialize configuration. :param app: An instance of :class:`~flask.Flask`. """ app.config.setdefault('REQUIREJS_BASEURL', app.static_folder) app.config.setdefault('COLLECT_STATIC_ROOT', app.static_folder) app.config.setdefault('COLLECT_STORAGE', 'flask_collect.storage.link') app.config.setdefault('COLLECT_FILTER', partial(collect_staticroot_removal, app)) def load_entrypoint(self, entry_point_group): """Load entrypoint. :param entry_point_group: A name of entry point group used to load ``webassets`` bundles. .. versionchanged:: 1.0.0b2 The *entrypoint* has been renamed to *entry_point_group*. """ for ep in pkg_resources.iter_entry_points(entry_point_group): self.env.register(ep.name, ep.load())
class InvenioAssets(object): """Invenio asset extension.""" def __init__(self, app=None, **kwargs): r"""Extension initialization. :param app: An instance of :class:`~flask.Flask`. :param \**kwargs: Keyword arguments are passed to ``init_app`` method. """ self.env = Environment() self.collect = Collect() if app: self.init_app(app, **kwargs) def init_app(self, app, entry_point_group='invenio_assets.bundles', **kwargs): """Initialize application object. :param app: An instance of :class:`~flask.Flask`. :param entry_point_group: A name of entry point group used to load ``webassets`` bundles. .. versionchanged:: 1.0.0b2 The *entrypoint* has been renamed to *entry_point_group*. """ self.init_config(app) self.env.init_app(app) self.collect.init_app(app) if entry_point_group: self.load_entrypoint(entry_point_group) app.extensions['invenio-assets'] = self def init_config(self, app): """Initialize configuration. :param app: An instance of :class:`~flask.Flask`. """ app.config.setdefault('REQUIREJS_BASEURL', app.static_folder) app.config.setdefault('COLLECT_STATIC_ROOT', app.static_folder) app.config.setdefault('COLLECT_STORAGE', 'flask_collect.storage.link') app.config.setdefault( 'COLLECT_FILTER', partial(collect_staticroot_removal, app)) def load_entrypoint(self, entry_point_group): """Load entrypoint. :param entry_point_group: A name of entry point group used to load ``webassets`` bundles. .. versionchanged:: 1.0.0b2 The *entrypoint* has been renamed to *entry_point_group*. """ for ep in pkg_resources.iter_entry_points(entry_point_group): self.env.register(ep.name, ep.load())
def create_app(config={}, testing=False): app = flask.Flask(__name__, instance_relative_config=True) app.config.update(DEFAULT_CONFIG) if testing: app.testing = True app.config.from_pyfile('test_settings.py', silent=True) else: app.config.from_pyfile('settings.py') app.config.update(config) assets_env.init_app(app) db.init_app(app) app.register_blueprint(layout) app.register_blueprint(summary) app.register_blueprint(report) app.register_blueprint(progress) if not app.testing: app.register_blueprint(auth) app.register_blueprint(comments) app.register_blueprint(common) app.register_blueprint(wiki) app.register_blueprint(maps) app.register_blueprint(factsheet) login_manager.init_app(app) login_manager.login_view = 'login' Mail().init_app(app) collect = Collect() collect.init_app(app) app.add_template_global(inject_static_file) return (app, collect) @app.route('/temp.html') def temp(): return flask.render_template('temp.html') url_prefix = app.config.get('URL_PREFIX') if url_prefix: app.wsgi_app = create_url_prefix_middleware(app.wsgi_app, url_prefix) if app.config.get('SENTRY_DSN'): from raven.contrib.flask import Sentry Sentry(app) if app.config.get('AUTH_LOG_FILE'): configure_auth_log_hander(app.config.get('AUTH_LOG_FILE')) return app
def create_app(test_config=None): from . import db from . import importer from . import view # this is Dockerfile dependent now... app = Flask(__name__, instance_path='/home/web/instance') instance_path = Path(app.instance_path) db_config = { 'name': os.getenv('DATABASE'), 'engine': 'playhouse.pool.PostgresqlDatabase', 'user': os.getenv('POSTGRES_USER'), 'password': os.getenv('POSTGRES_PASSWORD'), 'host': os.getenv('DATABASE_HOST'), } app.config.from_mapping( DATABASE=db_config, SECRET_KEY=os.getenv('SECRET_KEY'), COLLECT_STATIC_ROOT=str(instance_path / 'static'), ) if test_config: app.config.from_mapping(test_config) app.register_blueprint(view.app_blueprint) api = Api(app, '/api/v1') api.add_resource(view.WorksList, "/works") api.add_resource(view.WorksDetail, "/works/<string:iswc>") db.db_wrapper.init_app(app) db.db_wrapper.database.close() db.init_app(app) importer.init_app(app) collect = Collect() collect.init_app(app) return app
class InvenioAssets(object): """Invenio asset extension.""" def __init__(self, app=None, entrypoint='invenio_assets.bundles', **kwargs): """Extension initialization.""" self.env = Environment() self.collect = Collect() self.entrypoint = entrypoint if app: self.init_app(app, **kwargs) def init_app(self, app, **kwargs): """Initialize application object.""" self.init_config(app) self.env.init_app(app) self.collect.init_app(app) self.init_cli(app.cli) if self.entrypoint: self.load_entrypoint(self.entrypoint) app.extensions['invenio-assets'] = self def init_config(self, app): """Initialize configuration.""" app.config.setdefault("REQUIREJS_BASEURL", app.static_folder) app.config.setdefault('COLLECT_STATIC_ROOT', app.static_folder) app.config.setdefault('COLLECT_STORAGE', 'flask_collect.storage.link') def init_cli(self, cli): """Initialize CLI.""" cli.add_command(assets_cmd) cli.add_command(npm) cli.add_command(collect) def load_entrypoint(self, entrypoint): """Load entrypoint.""" for ep in pkg_resources.iter_entry_points(entrypoint): self.env.register(ep.name, ep.load())
def init(app) -> None: """ Bundle projects assets. :param app: Main application instance :type app: flask.Flask """ assets = Environment(app) assets.auto_build = app.config.get('ASSETS_AUTO_BUILD', True) files_to_watch = [] if 'COLLECT_STATIC_ROOT' in app.config: assets.cache = app.config['COLLECT_STATIC_ROOT'] collect = Collect() collect.init_app(app) collect.collect() app.static_folder = app.config['COLLECT_STATIC_ROOT'] for key in ['js', 'css']: assets_key = '%s_ASSETS' % key.upper() build_files = app.config[assets_key] files_to_watch.extend(_get_files_for_settings(app, assets_key)) bundle = Bundle(*build_files, output=app.config['%s_OUTPUT' % assets_key], filters=app.config['%s_FILTERS' % assets_key] ) assets.register('%s_all' % key, bundle) app.logger.debug('Bundling files: %s%s', os.linesep, os.linesep.join(build_files)) app.assets = assets app._base_files_to_watch = files_to_watch app.logger.info('Base assets are collected successfully.')
def finalize_create(self): # connect nav list to contextprosessor self.config['apps'] = frozenset( [x.name for x in self.blueprints.values()]) self.context_processor(get_config_processor(self)) # static stuff for production if self.env == PRODUCTION: # Add static handlers so url_for works for bp in self.blueprints.values(): self.add_url_rule('/static/<path:filename>', endpoint='%s.static' % (bp.name, ), view_func=invalid_request) self.add_url_rule('/static/<path:filename>', endpoint='static', view_func=invalid_request) # Load collect try: from flask_collect import Collect collect = Collect() collect.init_app(self) except ImportError: pass
import os import sys from webfest.base.factory import create_app from flask_collect import Collect from flask_script import Manager, Server, Shell, prompt_choices from flask_script.commands import ShowUrls, Clean from flask_assets import ManageAssets env = os.environ.get('webfest_ENV', 'dev') instance_path = "" if env == "Heroku": instance_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), "webfest", "base", "instance") app = create_app(instance_path=instance_path, env=env) manager = Manager(app=app) manager.add_command("show-urls", ShowUrls()) manager.add_command("clean", Clean()) manager.add_command("shell", Shell()) manager.add_command("assets", ManageAssets()) collect = Collect() collect.init_app(app) collect.init_script(manager) if __name__ == "__main__": manager.run()
def run(self): collect = Collect() collect.init_app(application) collect.init_script(manager) collect.collect(verbose=True)
from __future__ import unicode_literals from flask_collect import Collect from flask.ext.migrate import Migrate, MigrateCommand from flask.ext.script import Manager from app import app, db __author__ = 'lexxodus' migrate = Migrate(app, db) manager = Manager(app) manager.add_command('db', MigrateCommand) collect = Collect() collect.init_app(app) collect.init_script(manager) if __name__ == '__main__': manager.run()