Skip to content
Snippets Groups Projects
__init__.py 1.08 KiB
"""
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 SETTINGS_FILENAME

    :return: a new flask app instance
    """

    required_env_vars = ['SETTINGS_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 'SETTINGS_FILENAME' in os.environ:
        with open(os.environ['SETTINGS_FILENAME']) as f:
            app_config.update(config.load(f))

    app = Flask(__name__)
    app.secret_key = os.environ.get('SECRET_KEY') or 'super secret session key'
    app.config[CONFIG_KEY] = app_config

    from brian_dashboard_manager.routes import update
    app.register_blueprint(update.routes, url_prefix='/update')

    logging.info('Flask app initialized')
    environment.setup_logging()
    return app