aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin')
-rw-r--r--mediagoblin/app.py4
-rw-r--r--mediagoblin/db/base.py4
-rw-r--r--mediagoblin/db/open.py7
-rw-r--r--mediagoblin/init/__init__.py10
4 files changed, 18 insertions, 7 deletions
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index 9eb2e8f2..b9846962 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -108,9 +108,9 @@ class MediaGoblinApp(object):
# Set up the database
if DISABLE_GLOBALS:
- self.db_manager = setup_database(self.app_config['run_migrations'])
+ self.db_manager = setup_database(self)
else:
- self.db = setup_database(self.app_config['run_migrations'])
+ self.db = setup_database(self)
# Quit app if need to run dbupdate
## NOTE: This is currently commented out due to session errors..
diff --git a/mediagoblin/db/base.py b/mediagoblin/db/base.py
index c3c34763..6acb0b79 100644
--- a/mediagoblin/db/base.py
+++ b/mediagoblin/db/base.py
@@ -30,6 +30,10 @@ class GMGTableBase(object):
def _session(self):
return inspect(self).session
+ @property
+ def _app(self):
+ return self._session.bind.app
+
if not DISABLE_GLOBALS:
query = Session.query_property()
diff --git a/mediagoblin/db/open.py b/mediagoblin/db/open.py
index e85536de..bd629909 100644
--- a/mediagoblin/db/open.py
+++ b/mediagoblin/db/open.py
@@ -158,9 +158,14 @@ def _sqlite_disable_fk_pragma_on_connect(dbapi_con, con_record):
dbapi_con.execute('pragma foreign_keys=off')
-def setup_connection_and_db_from_config(app_config, migrations=False):
+def setup_connection_and_db_from_config(app_config, migrations=False, app=None):
engine = create_engine(app_config['sql_engine'])
+ # @@: Maybe make a weak-ref so an engine can get garbage
+ # collected? Not that we expect to make a lot of MediaGoblinApp
+ # instances in a single process...
+ engine.app = app
+
# Enable foreign key checking for sqlite
if app_config['sql_engine'].startswith('sqlite://'):
if migrations:
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index b6421e06..38ec1260 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -60,14 +60,16 @@ def setup_global_and_app_config(config_path):
return global_config, app_config
-def setup_database(run_migrations=False):
- app_config = mg_globals.app_config
- global_config = mg_globals.global_config
+def setup_database(app):
+ app_config = app.app_config
+ global_config = app.global_config
+ run_migrations = app_config['run_migrations']
# Load all models for media types (plugins, ...)
load_models(app_config)
# Set up the database
- db = setup_connection_and_db_from_config(app_config, run_migrations)
+ db = setup_connection_and_db_from_config(
+ app_config, run_migrations, app=app)
if run_migrations:
#Run the migrations to initialize/update the database.
from mediagoblin.gmg_commands.dbupdate import run_all_migrations