def apply_migrations(from_version): to_version = get_db_version() print("Applying migrations from version %s to %s..." % (from_version, to_version)) for mig_cls in sorted(_migrations, key=lambda m: (m._version, m._name)): if compare_version(mig_cls._version, from_version) <= 0: continue if mig_cls._max_version and compare_version(to_version, mig_cls._max_version) > 0: raise Exception( "Can not apply migration '%s', maximum version that can apply this migration is %s" % (mig._name, mig._max_version)) mig = mig_cls() print("Applying migration %s..." % mig._name) set_active_user(1) set_active_company(None) mig.migrate()
def upgrade_db(self, context={}): data = context["data"] if data["super_password"] != config.get("super_password"): raise Exception("Invalid super admin password") dbname = data["dbname"] database.set_active_db(dbname) from_version = get_db_version() update_db(force=True) apply_migrations(from_version=from_version) return { "next": { "name": "manage_db" }, "flash": "Database upgrade successfully", }