def setUp(self): """Define test variables and initialize app.""" self.app = create_app('config_test') self.client = self.app.test_client # apply any/all pending migrations. with self.app.app_context(): from flask_migrate import upgrade as _upgrade _upgrade(directory=os.path.join(os.path.dirname(__file__), 'migrations'))
def client(): with tempfile.NamedTemporaryFile() as dbf: app = create_app(test_db=f"sqlite:///{dbf.name}") with app.app_context(): from flask_migrate import upgrade as _upgrade _upgrade() with app.test_client() as test_client: yield test_client with app.app_context(): db.drop_all()
def run(self, args): cfg = Config.init() if args.action == 'start': app.run(cfg.get_server_host(), cfg.get_server_port()) elif args.action == 'upgrade': with app.app_context(): from flask_migrate import upgrade as _upgrade _upgrade() elif args.action == 'migrate': with app.app_context(): from flask_migrate import migrate as _migrate _migrate()
def _db(setup_test_app): """ Provide the transactional fixtures with access to the database via a Flask-SQLAlchemy database connection. """ db = SQLAlchemy(app=setup_test_app) Migrate(setup_test_app, db) # apply any/all pending migrations. with setup_test_app.app_context(): from flask_migrate import upgrade as _upgrade _upgrade() return db
def create_app(test_config=None): log.info("Creating python app "+__name__) flask_app = Flask(__name__) flask_app.config.update(settings.PROPS) if test_config is not None: flask_app.config.update(test_config) flask_app.register_blueprint(api_blueprint, url_prefix='/api') if test_config is None: if flask_app.config.get("COGNITO_CHECK_TOKEN_EXPIRATION") is False: log.warning("COGNITO_CHECK_TOKEN_EXPIRATION is disabled, ensure it is enabled in production environments.") if flask_app.config.get("FLASK_DEBUG") is True: log.warning("FLASK_DEBUG is enabled, ensure it is disabled in production environments.") # db initialization try: db.init_app(flask_app) except Exception as e: log.exception("Failed to initialize APP: {}".format(repr(e)), exc_info=True) # Migrations (upgrade to the latest version) with flask_app.app_context(): try: from flask_migrate import upgrade as _upgrade migrate = Migrate(flask_app, db) _upgrade() except Exception as e: log.exception("Failed to upgrade DB: {}".format(repr(e)), exc_info=True) health = HealthCheck() env_dump = EnvironmentDump(include_python=True, include_os=True, include_process=True) health.add_check(db_health) application_data = settings.application_data() # application_data['verified_aws_credentials'] = verify_aws_credentials() log.info(application_data) env_dump.add_section("application", application_data) env_dump.add_section("features", settings.features()) # Add a flask route to expose information flask_app.add_url_rule("/health", "healthcheck", view_func=lambda: health.run()) flask_app.add_url_rule("/info", "environment", view_func=lambda: env_dump.run()) return flask_app
def app(): DATABASE_FILEDESCRIPTOR, DATABASE = tempfile.mkstemp() test_config = flask_label.config.Testing() test_config.DATABASE = DATABASE test_config.SQLALCHEMY_DATABASE_URI = "sqlite:////{}".format(DATABASE) app = create_app(test_config) with app.app_context(): from flask_migrate import upgrade as _upgrade _upgrade() db_init_users() db_update_task() yield app os.close(DATABASE_FILEDESCRIPTOR) os.unlink(DATABASE)
def upgrade(directory, sql, tag, x_arg, revision): """Upgrade to a later version""" _upgrade(directory, revision, sql, tag, x_arg)
def upgrade(revision="head"): with app.app_context(): from flask_migrate import upgrade as _upgrade _upgrade(revision=revision)
stackcenterapp = Flask(__name__) CORS(stackcenterapp) stackcenterapp.config['DEBUG'] = True stackcenterapp.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///example.sqlite" stackcenterapp.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(stackcenterapp) migrate = Migrate(stackcenterapp, db) db.init_app(stackcenterapp) with stackcenterapp.app_context(): from flask_migrate import upgrade as _upgrade _upgrade(directory='migrations') # @app.before_first_request # def before_first_request(): # db.create_all() # client = docker.from_env() # # for container in client.containers.list(): # for label, v in container.labels.items(): # if label == LABEL_COM_DOCKER_COMPOSE_PROJECT: # stacks[v] = "" # pass @stackcenterapp.route('/', methods=['GET'])
class Config: SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL'] SQLALCHEMY_TRACK_MODIFICATIONS = False connex_app = connexion.App(__name__, specification_dir='./api/') app = connex_app.app app.config.from_object(Config) db = SQLAlchemy(app) ma = Marshmallow(app) migrate = Migrate(app, db) with app.app_context(): # Copy and pasted this from stackoverflow, not sure why we import as _upgrade() from flask_migrate import upgrade as _upgrade # Retry database migrations for 10 seconds in case database is slow to start up # (Common in docker-compose environments) for _ in range(5): try: _upgrade() break except OperationalError as exc: sleep(2) connex_app.add_api('openapi.yml', validate_responses=True) @app.route('/') def swagger_ui(): return redirect('/ui')