aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db/util.py
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2011-07-10 18:27:38 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2011-07-10 18:27:38 -0500
commit1b38cfa3b7a208a0af995c082fc0998cd0099996 (patch)
tree8b52d96a79f637b3f0c03a665683338ad7f00be8 /mediagoblin/db/util.py
parent8569533f2183348b4eae43bdbd4378cd9faa0e4c (diff)
downloadmediagoblin-1b38cfa3b7a208a0af995c082fc0998cd0099996.tar.lz
mediagoblin-1b38cfa3b7a208a0af995c082fc0998cd0099996.tar.xz
mediagoblin-1b38cfa3b7a208a0af995c082fc0998cd0099996.zip
install_migration_version_if_missing() now a separate function
Also added it to MigrationManager.migrate_new(), because we'll always need a migration number when migrating.
Diffstat (limited to 'mediagoblin/db/util.py')
-rw-r--r--mediagoblin/db/util.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/mediagoblin/db/util.py b/mediagoblin/db/util.py
index 49275711..03e896f3 100644
--- a/mediagoblin/db/util.py
+++ b/mediagoblin/db/util.py
@@ -198,19 +198,25 @@ class MigrationManager(object):
{u'$set': {u'current_migration': migration_number}},
upsert=True)
- def database_current_migration(self, install_if_missing=False):
+ def install_migration_version_if_missing(self):
+ """
+ Sets the migration to the latest version if no migration
+ version at all is set.
+ """
+ mgoblin_metadata = self.database[u'app_metadata'].find_one(
+ {u'_id': u'mediagoblin'})
+ if not mgoblin_metadata:
+ latest_migration = self.latest_migration()
+ self.set_current_migration(latest_migration)
+
+ def database_current_migration(self):
"""
Return the current migration in the database.
"""
mgoblin_metadata = self.database[u'app_metadata'].find_one(
{u'_id': u'mediagoblin'})
if not mgoblin_metadata:
- if install_if_missing:
- latest_migration = self.latest_migration()
- self.set_current_migration(latest_migration)
- return latest_migration
- else:
- return None
+ return None
else:
return mgoblin_metadata[u'current_migration']
@@ -227,6 +233,7 @@ class MigrationManager(object):
Get a list of migrations to run still, if any.
"""
db_current_migration = self.database_current_migration()
+
return [
(migration_number, migration_func)
for migration_number, migration_func in self.sorted_migrations
@@ -244,6 +251,11 @@ class MigrationManager(object):
run post-migration. Takes (migration_number, migration_func)
as arguments
"""
+ # If we aren't set to any version number, presume we're at the
+ # latest (which means we'll do nothing here...)
+ # @@: should this be in migrations_to_run()?
+ self.install_migration_version_if_missing()
+
for migration_number, migration_func in self.migrations_to_run():
if pre_callback:
pre_callback(migration_number, migration_func)