def create_app(cfg_files=['DEFAULT']):
"""Factory for making the web Flask application
:param cfg_files: Single or more config file(s)
:return: Constructed web application
:rtype: ``repocribro.repocribro.Repocribro``
"""
app = Repocribro()
from .database import db
ext_master = ExtensionsMaster(app=app, db=db)
app.container.set_singleton('ext_master', ext_master)
if cfg_files == ['DEFAULT']:
cfg_files = os.environ.get('REPOCRIBRO_CONFIG_FILE',
DEFAULT_CONFIG_FILES)
config = create_config(cfg_files)
config.set('flask', 'release', RELEASE)
app.container.set_singleton('config', config)
ext_master.call('setup_config')
config.update_flask_cfg(app)
check_config(config)
app.secret_key = config.get('flask', 'secret_key')
db.init_app(app)
app.container.set_singleton('db', db)
ext_names = ext_master.call('introduce', 'unknown')
print('Loaded extensions: {}'.format(', '.join(ext_names)))
ext_master.call('init_first')
ext_master.call('init_models')
ext_master.call('init_business')
ext_master.call('init_filters')
ext_master.call('init_blueprints')
ext_master.call('init_container')
if config.has_option('flask', 'application_root'):
from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware
app.wsgi_app = DispatcherMiddleware(
run_simple,
{config.get('flask', 'application_root'): app.wsgi_app}
)
return app
评论列表
文章目录