Factor out check_db_migrations_current
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 1 Jan 2012 16:24:02 +0000 (17:24 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 1 Jan 2012 17:36:42 +0000 (18:36 +0100)
When initializing the database connection the current mongo
based setup checked for new migrations and warned about
them. This was mongo specific so factor'd it out into a
more generic check_db_migrations_current function in the
mongo backend.

Also created a dummy one in the sql backend.

mediagoblin/db/mongo/open.py
mediagoblin/db/open.py
mediagoblin/db/sql/open.py
mediagoblin/init/__init__.py

index 63889292ab478151bb044943d829c58d7985221f..8016ced95cfff9c518fe7f919c5f295383e29e5e 100644 (file)
@@ -18,6 +18,7 @@ import pymongo
 import mongokit
 from paste.deploy.converters import asint
 from mediagoblin.db.mongo import models
+from mediagoblin.db.util import MigrationManager
 
 
 def connect_database_from_config(app_config, use_pymongo=False):
@@ -53,3 +54,25 @@ def setup_connection_and_db_from_config(app_config, use_pymongo=False):
         models.register_models(connection)
 
     return (connection, db)
+
+
+def check_db_migrations_current(db):
+    # This MUST be imported so as to set up the appropriate migrations!
+    from mediagoblin.db.mongo import migrations
+
+    # Init the migration number if necessary
+    migration_manager = MigrationManager(db)
+    migration_manager.install_migration_version_if_missing()
+
+    # Tiny hack to warn user if our migration is out of date
+    if not migration_manager.database_at_latest_migration():
+        db_migration_num = migration_manager.database_current_migration()
+        latest_migration_num = migration_manager.latest_migration()
+        if db_migration_num < latest_migration_num:
+            print (
+                "*WARNING:* Your migrations are out of date, "
+                "maybe run ./bin/gmg migrate?")
+        elif db_migration_num > latest_migration_num:
+            print (
+                "*WARNING:* Your migrations are out of date... "
+                "in fact they appear to be from the future?!")
index a92a6ada33a832711eb3d5f9ee4862c001eef324..32827fcbd54501a1829a8b40038b89cfacfc41ca 100644 (file)
@@ -14,4 +14,5 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from mediagoblin.db.mongo.open import setup_connection_and_db_from_config
+from mediagoblin.db.mongo.open import \
+    setup_connection_and_db_from_config, check_db_migrations_current
index 57feaf50a154e3fb11b4ce3359075a301f8963c4..c682bd3b70a4052a2ea624ab1c6edf38bde804df 100644 (file)
@@ -27,3 +27,7 @@ def setup_connection_and_db_from_config(app_config):
     Session.configure(bind=engine)
 
     return "dummy conn", DatabaseMaster(engine)
+
+
+def check_db_migrations_current(db):
+    pass
index 5f7f83d4f889d2e8f2ccc44edc870404abbfcc59..23c1c26dce16bf587940bb8975dbf3085456350c 100644 (file)
@@ -23,8 +23,8 @@ from mediagoblin.init.config import (
     read_mediagoblin_config, generate_validation_report)
 from mediagoblin import mg_globals
 from mediagoblin.mg_globals import setup_globals
-from mediagoblin.db.open import setup_connection_and_db_from_config
-from mediagoblin.db.util import MigrationManager
+from mediagoblin.db.open import setup_connection_and_db_from_config, \
+    check_db_migrations_current
 from mediagoblin.workbench import WorkbenchManager
 from mediagoblin.storage import storage_system_from_config
 
@@ -56,28 +56,10 @@ def setup_global_and_app_config(config_path):
 def setup_database():
     app_config = mg_globals.app_config
 
-    # This MUST be imported so as to set up the appropriate migrations!
-    from mediagoblin.db.mongo import migrations
-
     # Set up the database
     connection, db = setup_connection_and_db_from_config(app_config)
 
-    # Init the migration number if necessary
-    migration_manager = MigrationManager(db)
-    migration_manager.install_migration_version_if_missing()
-
-    # Tiny hack to warn user if our migration is out of date
-    if not migration_manager.database_at_latest_migration():
-        db_migration_num = migration_manager.database_current_migration()
-        latest_migration_num = migration_manager.latest_migration()
-        if db_migration_num < latest_migration_num:
-            print (
-                "*WARNING:* Your migrations are out of date, "
-                "maybe run ./bin/gmg migrate?")
-        elif db_migration_num > latest_migration_num:
-            print (
-                "*WARNING:* Your migrations are out of date... "
-                "in fact they appear to be from the future?!")
+    check_db_migrations_current(db)
 
     setup_globals(
         db_connection=connection,