Simpler run_migrations method.
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 10 Jul 2011 20:41:18 +0000 (15:41 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 10 Jul 2011 20:41:18 +0000 (15:41 -0500)
Allows for calbacks, should be useful for printing output and catching
things in tests.

Gets rid of the generator stuff which now that I think of it is a
messy idea.

mediagoblin/db/util.py

index 7bae57ff57b93aae1cfd9ce4b5e80056e22cd41f..9e4efcab8a9eee0b4263b3e48d83e1cb0cc523dc 100644 (file)
@@ -232,25 +232,22 @@ class MigrationManager(object):
             for migration_number, migration_func in self.sorted_migrations
             if migration_number > db_current_migration]
 
-    def iteratively_migrate(self):
+    def migrate_new(self, pre_callback=None, post_callback=None):
         """
-        Iteratively run all migrations.
+        Run all migrations.
 
-        Useful if you need to print some message about each migration
-        after you run it.
-
-        Each time you loop over this, it'll return the migration
-        number and migration function.
+        Includes two optional args:
+         - pre_callback: if called, this is a callback on something to
+           run pre-migration.  Takes (migration_number, migration_func)
+           as arguments
+         - pre_callback: if called, this is a callback on something to
+           run post-migration.  Takes (migration_number, migration_func)
+           as arguments
         """
         for migration_number, migration_func in self.migrations_to_run():
+            if pre_callback:
+                pre_callback(migration_number, migration_func)
             migration_func(self.database)
             self.set_current_migration(migration_number)
-            yield migration_number, migration_func
-        
-    def run_new_migrations(self):
-        """
-        Install all migrations that need to be installed, quietly.
-        """
-        for migration_number, migration_func in self.iteratively_migrate():
-            # No need to say anything... we're just migrating quietly.
-            pass
+            if post_callback:
+                post_callback(migration_number, migration_func)