Source code for vulyk.bootstrap
# -*- coding: utf-8 -*-
"""
Project bootstrapper.
Contains code not to be used directly after the initialization.
"""
import flask
from flask_mongoengine import MongoEngine
from . import _assets, _blueprints, _logging, _social_login
from ._tasks import init_plugins
__all__ = [
'init_app',
'init_plugins'
]
# region Init
[docs]def init_app(name):
"""
:param name: application alias
:type name: str
:return: Bootstrapped cached application instance
:rtype: flask.Flask
"""
key = 'app'
if not hasattr(init_app, key):
app = flask.Flask(name)
app.config.from_object('vulyk.settings')
try:
app.config.from_object('local_settings')
except ImportError:
pass
app.template_folder = app.config.get('TEMPLATES_FOLDER', 'templates')
app.static_folder = app.config.get('STATIC_FOLDER', 'static')
_logging.init_logger(app=app)
app.logger.info('STARTING.')
db = MongoEngine(app)
app.logger.debug('Database is available at %s:%s',
app.config['MONGODB_SETTINGS'].get('HOST',
'localhost'),
app.config['MONGODB_SETTINGS'].get('PORT', 27017))
_assets.init(app)
_social_login.init_social_login(app, db)
if app.config.get('ENABLE_ADMIN', False):
from . import _admin
app.admin = _admin.init_admin(app)
_blueprints.init_blueprints(app)
setattr(init_app, key, app)
app.logger.info('Vulyk bootstrapping complete.')
return getattr(init_app, key)
# endregion Init