Update OudatedDatabaseError message

Drop redundant warning;
Do not list database_auto_migrate as an option (too risky; use this as
an option for development only).
This commit is contained in:
Sergey Golitsynskiy
2022-05-31 10:30:30 -04:00
parent 8e3c6f65e0
commit 320821ce14
+7 -14
View File
@@ -80,8 +80,12 @@ class IncorrectVersionError(Exception):
class OutdatedDatabaseError(Exception):
# The database is under Alembic version control, but is out-of-date. Automatic upgrade possible.
def __init__(self, model: str) -> None:
msg = f"Your {model} database is out-of-date; automatic update requires setting `database_auto_migrate`"
def __init__(self, model: str, db_version: str, code_version: str) -> None:
msg = f"Your {model} database has version {db_version}, but this code expects "
msg += f"version {code_version}. "
msg += "To upgrade your database, run `manage_db.sh upgrade`. "
msg += "For more options (e.g. upgrading/downgrading to a specific version) see instructions in that file. "
msg += "Please remember to backup your database before migrating."
super().__init__(msg)
@@ -410,23 +414,12 @@ class DatabaseStateVerifier:
code_version = am.get_model_script_head(self.model)
if not self.is_auto_migrate:
db_version = am.get_model_db_head(self.model)
msg = self._get_upgrade_message(model, cast(str, db_version), cast(str, code_version))
log.warning(msg)
raise OutdatedDatabaseError(model)
raise OutdatedDatabaseError(model, cast(str, db_version), cast(str, code_version))
else:
log.info("Database is being upgraded to current version: {code_version}")
am.upgrade(self.model)
return
def _get_upgrade_message(self, model: str, db_version: str, code_version: str) -> str:
msg = f"Your {model} database has version {db_version}, but this code expects "
msg += f"version {code_version}. "
msg += "This database can be upgraded automatically if database_auto_migrate is set. "
msg += "To upgrade manually, run `manage_db.sh upgrade`. "
msg += "For more options (e.g. upgrading/downgrading to a specific version) see instructions in that file. "
msg += "Please remember to backup your database before migrating."
return msg
def _get_model_name(self) -> str:
return "galaxy" if self.model == GXY else "tool shed install"