Made it so that it's migrate_new() which installs the migration

version if missing, migrations_to_run just throws an error if not set
This commit is contained in:
Christopher Allan Webber 2011-07-10 22:02:51 -05:00
parent 9548c6463b
commit dab0d24d98

View File

@ -115,6 +115,9 @@ def remove_deprecated_indexes(database, deprecated_indexes=DEPRECATED_INDEXES):
# Don't set this yourself! RegisterMigration will automatically fill # Don't set this yourself! RegisterMigration will automatically fill
# this with stuff via decorating methods in migrations.py # this with stuff via decorating methods in migrations.py
class MissingCurrentMigration(Exception): pass
MIGRATIONS = {} MIGRATIONS = {}
@ -164,6 +167,16 @@ class MigrationManager(object):
self.migration_registry = migration_registry self.migration_registry = migration_registry
self._sorted_migrations = None self._sorted_migrations = None
def _ensure_current_migration_record(self):
"""
If there isn't a database[u'app_metadata'] mediagoblin entry
with the 'current_migration', throw an error.
"""
if self.database_current_migration() is None:
MissingCurrentMigration(
"Tried to call function which requires "
"'current_migration' set in database")
@property @property
def sorted_migrations(self): def sorted_migrations(self):
""" """
@ -235,9 +248,7 @@ class MigrationManager(object):
Note that calling this will set your migration version to the Note that calling this will set your migration version to the
latest version if it isn't installed to anything yet! latest version if it isn't installed to anything yet!
""" """
# If we aren't set to any version number, presume we're at the self._ensure_current_migration_record()
# latest (which means we'll do nothing here...)
self.install_migration_version_if_missing()
db_current_migration = self.database_current_migration() db_current_migration = self.database_current_migration()
@ -258,6 +269,10 @@ class MigrationManager(object):
run post-migration. Takes (migration_number, migration_func) run post-migration. Takes (migration_number, migration_func)
as arguments as arguments
""" """
# If we aren't set to any version number, presume we're at the
# latest (which means we'll do nothing here...)
self.install_migration_version_if_missing()
for migration_number, migration_func in self.migrations_to_run(): for migration_number, migration_func in self.migrations_to_run():
if pre_callback: if pre_callback:
pre_callback(migration_number, migration_func) pre_callback(migration_number, migration_func)