Move application level setup of database to init/
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 17 Jul 2011 15:45:50 +0000 (17:45 +0200)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 17 Jul 2011 15:45:50 +0000 (17:45 +0200)
Setting up the database now involves checking the
migrations status and setting up the globals.
Moved all of that into init/__init__.py:setup_database().

mediagoblin/app.py
mediagoblin/init/__init__.py

index 1c38f778ad5f4aec1ba4ccc79dd6e9a2ac9c4bcc..85c3c0c7c0d21c5c6252648e75603fd78b55a2e5 100644 (file)
@@ -21,15 +21,10 @@ import routes
 from webob import Request, exc
 
 from mediagoblin import routing, util, storage
-from mediagoblin.db.open import setup_connection_and_db_from_config
-from mediagoblin.db.util import MigrationManager
 from mediagoblin.mg_globals import setup_globals
 from mediagoblin.init.celery import setup_celery_from_config
 from mediagoblin.init import get_jinja_loader, get_staticdirector, \
-    setup_global_and_app_config, setup_workbench
-
-# This MUST be imported so as to set up the appropriate migrations!
-from mediagoblin.db import migrations
+    setup_global_and_app_config, setup_workbench, setup_database
 
 
 class MediaGoblinApp(object):
@@ -60,18 +55,7 @@ class MediaGoblinApp(object):
         ##########################################
 
         # Set up the database
-        self.connection, self.db = setup_connection_and_db_from_config(
-            app_config)
-
-        # Init the migration number if necessary
-        migration_manager = MigrationManager(self.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():
-            print (
-                "*WARNING:* Your migrations are out of date, "
-                "maybe run ./bin/gmg migrate?")
+        self.connection, self.db = setup_database()
 
         # Get the template environment
         self.template_loader = get_jinja_loader(
@@ -108,8 +92,6 @@ class MediaGoblinApp(object):
 
         setup_globals(
             app=self,
-            db_connection=self.connection,
-            database=self.db,
             public_store=self.public_store,
             queue_store=self.queue_store)
 
index 6320d21bcacdf675cadbb9da240afdd6b1422a9c..1e519cc9ca70004ad6aecf2640c782baaa23ba69 100644 (file)
@@ -20,6 +20,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.workbench import WorkbenchManager
 
 
@@ -42,6 +44,33 @@ def setup_global_and_app_config(config_path):
 
     return global_config, app_config
 
+
+def setup_database():
+    app_config = mg_globals.app_config
+
+    # This MUST be imported so as to set up the appropriate migrations!
+    from mediagoblin.db 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():
+        print (
+            "*WARNING:* Your migrations are out of date, "
+            "maybe run ./bin/gmg migrate?")
+
+    setup_globals(
+        db_connection = connection,
+        database = db)
+
+    return connection, db
+
+
 def get_jinja_loader(user_template_path=None):
     """
     Set up the Jinja template loaders, possibly allowing for user