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)