def create_app(version_path): """Construct an application instance.""" initialize_logging() app = connexion.App(__name__, specification_dir='spec/') swagger_ui_enabled = os.environ.get('ENV', None) == 'localdev' app.add_api('swagger.yml', resolver=RestyResolver('landoapi.api'), swagger_ui=swagger_ui_enabled) # Get the Flask app being wrapped by the Connexion app. flask_app = app.app keys_before_setup = set(flask_app.config.keys()) configure_app(flask_app, version_path) log_app_config(flask_app, keys_before_setup) flask_app.register_blueprint(dockerflow) # Initialize database db.init_app(flask_app) # Intialize the alembic extension alembic.init_app(flask_app) initialize_caching(flask_app) initialize_hooks(flask_app) return app
def db(app): """Reset database for each test.""" with app.app_context(): _db.init_app(app) _db.create_all() yield _db _db.session.remove() _db.drop_all()
def create_app(version_path): """Construct an application instance.""" initialize_logging() app = connexion.App(__name__, specification_dir='spec/') app.add_api('swagger.yml', resolver=RestyResolver('landoapi.api')) # Get the Flask app being wrapped by the Connexion app. flask_app = app.app flask_app.config['VERSION_PATH'] = version_path log_config_change('VERSION_PATH', version_path) version_info = json.load(open(version_path)) logger.info(version_info, 'app.version') this_app_version = version_info['version'] initialize_sentry(flask_app, this_app_version) db_uri = flask_app.config.setdefault( 'SQLALCHEMY_DATABASE_URI', os.environ.get('DATABASE_URL', 'sqlite://')) log_config_change('SQLALCHEMY_DATABASE_URI', db_uri) flask_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False flask_app.config['ALEMBIC'] = {'script_location': '/migrations/'} flask_app.config['PATCH_BUCKET_NAME'] = os.getenv('PATCH_BUCKET_NAME') log_config_change('PATCH_BUCKET_NAME', flask_app.config['PATCH_BUCKET_NAME']) flask_app.config['PINGBACK_HOST_URL'] = os.getenv('PINGBACK_HOST_URL') log_config_change('PINGBACK_HOST_URL', flask_app.config['PINGBACK_HOST_URL']) # AWS credentials should be only provided if needed in development flask_app.config['AWS_ACCESS_KEY'] = os.getenv('AWS_ACCESS_KEY', None) flask_app.config['AWS_SECRET_KEY'] = os.getenv('AWS_SECRET_KEY', None) flask_app.register_blueprint(dockerflow) # Initialize database db.init_app(flask_app) # Intialize the alembic extension alembic.init_app(app.app) return app