""" automatically invoked app factory """ import logging import os from flask import Flask from brian_dashboard_manager import environment from brian_dashboard_manager import config CONFIG_KEY = 'CONFIG_PARAMS' def create_app(): """ overrides default settings with those found in the file read from env var CONFIG_FILENAME :return: a new flask app instance """ required_env_vars = ['CONFIG_FILENAME'] assert all([n in os.environ for n in required_env_vars]), \ 'environment variables %r must be defined' % required_env_vars app_config = config.defaults() if 'CONFIG_FILENAME' in os.environ: with open(os.environ['CONFIG_FILENAME']) as f: app_config.update(config.load(f)) app = Flask(__name__) app.secret_key = os.environ.get('SECRET_KEY', 'super secret session key') app.config[CONFIG_KEY] = app_config from brian_dashboard_manager.routes import update, version app.register_blueprint(update.routes, url_prefix='/update') app.register_blueprint(version.routes, url_prefix='/version') logging.info('Flask app initialized') environment.setup_logging() return app