aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin/db/mongo/open.py4
-rw-r--r--mediagoblin/db/open.py6
-rw-r--r--mediagoblin/db/sql/open.py12
-rw-r--r--mediagoblin/init/__init__.py5
4 files changed, 24 insertions, 3 deletions
diff --git a/mediagoblin/db/mongo/open.py b/mediagoblin/db/mongo/open.py
index bedc497b..c4f37b42 100644
--- a/mediagoblin/db/mongo/open.py
+++ b/mediagoblin/db/mongo/open.py
@@ -21,6 +21,10 @@ from mediagoblin.db.mongo import models
from mediagoblin.db.mongo.util import MigrationManager
+def load_models(app_config):
+ pass
+
+
def connect_database_from_config(app_config, use_pymongo=False):
"""
Connect to the main database, take config from app_config
diff --git a/mediagoblin/db/open.py b/mediagoblin/db/open.py
index 0163469f..f4c38511 100644
--- a/mediagoblin/db/open.py
+++ b/mediagoblin/db/open.py
@@ -21,7 +21,9 @@ except ImportError:
if use_sql:
from mediagoblin.db.sql.open import \
- setup_connection_and_db_from_config, check_db_migrations_current
+ setup_connection_and_db_from_config, check_db_migrations_current, \
+ load_models
else:
from mediagoblin.db.mongo.open import \
- setup_connection_and_db_from_config, check_db_migrations_current
+ setup_connection_and_db_from_config, check_db_migrations_current, \
+ load_models
diff --git a/mediagoblin/db/sql/open.py b/mediagoblin/db/sql/open.py
index 7362b1c5..2520bb49 100644
--- a/mediagoblin/db/sql/open.py
+++ b/mediagoblin/db/sql/open.py
@@ -20,6 +20,8 @@ import logging
from mediagoblin.db.sql.base import Base, Session
+_log = logging.getLogger(__name__)
+
class DatabaseMaster(object):
def __init__(self, engine):
@@ -40,6 +42,16 @@ class DatabaseMaster(object):
Session.remove()
+def load_models(app_config):
+ import mediagoblin.db.sql.models
+
+ # TODO/Fix: This breaks celery
+ if False:
+ for media_type in app_config['media_types']:
+ _log.debug("Loading %s.models", media_type)
+ __import__(media_type + ".models")
+
+
def setup_connection_and_db_from_config(app_config):
engine = create_engine(app_config['sql_engine'])
# logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index 7ac59db1..1d8115cb 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -24,7 +24,7 @@ from mediagoblin.init.config import (
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
+ check_db_migrations_current, load_models
from mediagoblin.workbench import WorkbenchManager
from mediagoblin.storage import storage_system_from_config
@@ -56,6 +56,9 @@ def setup_global_and_app_config(config_path):
def setup_database():
app_config = mg_globals.app_config
+ # Load all models for media types (plugins, ...)
+ load_models(app_config)
+
# Set up the database
connection, db = setup_connection_and_db_from_config(app_config)