diff --git a/arkindex/documents/management/commands/load_export.py b/arkindex/documents/management/commands/load_export.py index bc86530c4cec56e8b2d6a45329bb7009ed5e5933..d5f016307b9ebb2e4e5b26980a147ad536ec4358 100644 --- a/arkindex/documents/management/commands/load_export.py +++ b/arkindex/documents/management/commands/load_export.py @@ -38,7 +38,8 @@ from arkindex.process.models import ( from arkindex.training.models import Dataset, DatasetElement, DatasetSet, Model from arkindex.users.models import Role, User -EXPORT_VERSION = 9 +EXPORT_VERSION_MIN = 8 +EXPORT_VERSION_MAX = 9 TABLE_NAMES = { "export_version", @@ -519,13 +520,16 @@ class Command(BaseCommand): # Check database tables db_results = self.db.execute(SQL_TABLES_QUERY).fetchall() - if not set([table["name"] for table in db_results]) == TABLE_NAMES: - raise CommandError(f"The SQLite database {db_path} is not a correct Arkindex export") + # Database's tables must be a superset of TABLE_NAMES, so we keep compatibility when removing things + if (missing := TABLE_NAMES - set([table["name"] for table in db_results])): + raise CommandError(f"The SQLite database {db_path} miss some expected tables: {sorted(missing)}") # Check export version db_results = self.db.execute(SQL_VERSION_QUERY).fetchall() - if len(db_results) != 1 or db_results[0]["version"] != EXPORT_VERSION: - raise CommandError(f"The SQLite database {db_path} does not have the correct export version") + if len(db_results) != 1 or not ( + EXPORT_VERSION_MIN <= db_results[0]["version"] <= EXPORT_VERSION_MAX + ): + raise CommandError(f"The SQLite database {db_path} does not have a supported export version") # Retrieve corpus name date = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M")