Create load_models().

So all models are ready when connecting to the db and so
our "db" object has all models listed on it, create a
function to load all models from the media_types, etc. Call
it in setup_database()

Problem: This gives celery warnings, because celery is
imported before being setup properly. No idea how to fix
this now. So media-type loading is excluded from
load_models for now.
This commit is contained in:
Elrond 2012-03-20 12:39:15 +01:00
parent 39fd817ab8
commit b829595334
4 changed files with 24 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)