Esempio n. 1
0
def create_app(config):
    application = Flask(__name__)
    application.config.from_object(config)

    application.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    application.jinja_env.add_extension('jinja2.ext.do')

    db.init_app(app=application)
    security.init_app(app=application, datastore=user_datastore)
    api.init_app(app=application)

    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
    migrate = Migrate(application, db)

    _load_application_blueprints(application)

    _load_api_blueprints(application)

    load_flask_dance_authorization(application)

    register_assets(application)

    _register_global_variables(application)

    return application
Esempio n. 2
0
def create_app(config_name):
    # 创建app实例对象
    app = Flask(__name__)
    # 加载配置
    app.config.from_object(config.get(config_name) or 'default')
    # 执行额外的初始化
    config.get(config_name).init_app(app)

    # 设置debug=True,让toolbar生效
    # app.debug=True

    # Setup Flask-Security
    user_datastore = SQLAlchemyUserDatastore(db, User, Role)
    security.init_app(app, user_datastore)

    # 加载扩展
    config_extensions(app)

    # 加载admin
    config_admin(app)

    # 初始化调度器配置
    config_scheduler(app)

    # 配置蓝本
    config_blueprint(app)

    # 配置全局错误处理
    config_errorhandler(app)

    # 返回app实例对象
    return app
Esempio n. 3
0
def register_extensions(app):
    db.init_app(app)
    migrate.init_app(app, db)

    # @todo there is no init_app in SQLAlchemyUserDatastore :'(
    user_datastore = SQLAlchemyUserDatastore(db, User, Role)

    security.init_app(app, user_datastore)

    return None
Esempio n. 4
0
def register_extensions(app):
    db.init_app(app)
    migrate.init_app(app, db)

    # @todo there is no init_app in SQLAlchemyUserDatastore :'(
    user_datastore = SQLAlchemyUserDatastore(db, User, Role)

    security.init_app(app, user_datastore)

    return None
Esempio n. 5
0
def register_extensions(app):
    """Register Flask extensions."""

    db.app = app
    db.init_app(app)
    migrate.init_app(app, db)
    mail.init_app(app)
    moment.init_app(app)

    from flask_security import SQLAlchemyUserDatastore
    from app.auth.models import User, Role
    user_datastore = SQLAlchemyUserDatastore(db, User, Role)
    security.init_app(app=app, datastore=user_datastore)
    return None
Esempio n. 6
0
def create_app():
    app = Flask(__name__, static_folder='static', static_url_path="/static")

    app.config.from_object(Config())

    db.init_app(app)

    csrf.init_app(app)

    security.init_app(app, user_datastore)

    app.cli.add_command(init_db_command)

    app.register_blueprint(api_blueprint)

    @app.route('/', defaults={'path': ''})
    @app.route('/<path:path>')
    def catch_all(path):
        return app.send_static_file("index.html")

    return app
Esempio n. 7
0
def register_extensions(app):
    db.init_app(app)
    migrate.init_app(app, db)
    principal.init_app(app)
    security.init_app(app, datastore=user_datastore)
    mail.init_app(app)
Esempio n. 8
0
def create_app(config_name):
    """An application factory, as explained here:
        http://flask.pocoo.org/docs/patterns/appfactories/

    @param config_name:    The configuration object to use.
    """
    app = Flask(__name__)

    app.config.from_object(config[config_name]
                           or config[os.getenv('BG_CONFIG')])
    app.config.from_envvar('BG_SETTINGS', silent=True)
    config[config_name].init_app(app)

    db.init_app(app)

    # Setup Flask-Security
    user_datastore = SQLAlchemyUserDatastore(db, User, Role)
    from app.users.forms import ExtendedRegisterForm
    security.init_app(app, user_datastore, register_form=ExtendedRegisterForm)

    bootstrap.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    migrate.init_app(app, db)

    md = Markdown(app,
                  output_format='html5',
                  extensions=['fenced_code', 'tables', 'abbr', 'footnotes'])

    pages.init_app(app)
    csrf.init_app(app)

    register_adminviews(app)

    app.jinja_env.filters['alert_class'] = alert_class_filter

    # WTForms helpers
    from .utils import add_helpers
    add_helpers(app)

    if not app.debug:
        import logging
        from logging.handlers import SMTPHandler
        mail_handler = SMTPHandler(mailhost=app.config['MAIL_SERVER'],
                                   fromaddr=app.config['ADMINS_FROM_EMAIL'],
                                   toaddrs=app.config['ADMINS_EMAIL'],
                                   subject='Application Error Occurred')
        mail_handler.setLevel(logging.ERROR)
        app.logger.addHandler(mail_handler)

    register_blueprints(app)
    register_commands(app)

    # Create the bg_interface directory if it does not exist
    directory = os.path.join(os.path.dirname(BASE_DIR), 'bg_interface')

    if not os.path.exists(directory):
        os.makedirs(directory)

    with app.app_context():
        db.create_all()
        if not User.query.first():
            # Create a default admin user if there is no user in the database
            user_datastore.create_role(name='admin')
            user_datastore.create_user(name='Administration Account',
                                       email='*****@*****.**',
                                       password=encrypt_password('password'),
                                       roles=['admin'])
            db.session.commit()
            app.logger.info('Created admin user [email protected]')

    return app