This commit was just to fix a few of the errors with the merging and to
[mediagoblin.git] / mediagoblin / init / __init__.py
index d16027db62385cc2a5382493e1268b71ddcb23de..e0711416378cbf4c1e5cf7ceb874297a544bffb3 100644 (file)
@@ -24,6 +24,7 @@ from mediagoblin import mg_globals
 from mediagoblin.mg_globals import setup_globals
 from mediagoblin.db.open import setup_connection_and_db_from_config, \
     check_db_migrations_current, load_models
+from mediagoblin.tools.pluginapi import hook_runall
 from mediagoblin.tools.workbench import WorkbenchManager
 from mediagoblin.storage import storage_system_from_config
 
@@ -57,16 +58,20 @@ def setup_global_and_app_config(config_path):
     return global_config, app_config
 
 
-def setup_database():
+def setup_database(run_migrations=False):
     app_config = mg_globals.app_config
+    global_config = mg_globals.global_config
 
     # Load all models for media types (plugins, ...)
     load_models(app_config)
-
     # Set up the database
-    db = setup_connection_and_db_from_config(app_config)
-
-    check_db_migrations_current(db)
+    db = setup_connection_and_db_from_config(app_config, run_migrations)
+    if run_migrations:
+        #Run the migrations to initialize/update the database.
+        from mediagoblin.gmg_commands.dbupdate import run_all_migrations
+        run_all_migrations(db, app_config, global_config)
+    else:
+        check_db_migrations_current(db)
 
     setup_globals(database=db)
 
@@ -116,6 +121,12 @@ def get_staticdirector(app_config):
     direct_domains = {None: app_config['direct_remote_path'].strip()}
     direct_domains['theme'] = app_config['theme_web_path'].strip()
 
+    # Let plugins load additional paths
+    for plugin_static in hook_runall("static_setup"):
+        direct_domains[plugin_static.name] = "%s/%s" % (
+            app_config['plugin_web_path'].rstrip('/'),
+            plugin_static.name)
+
     return staticdirect.StaticDirect(
         direct_domains)