Set up request.db / app.db(_manager) depending on DISABLE_GLOBALS
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 30 Nov 2014 20:50:50 +0000 (14:50 -0600)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 3 Dec 2014 21:40:57 +0000 (15:40 -0600)
mediagoblin/app.py

index e5442010f3ddd742e6dfa825db0cb285eb0ec7e4..c04585961f8066260c6695bbd0519442ec22dddf 100644 (file)
@@ -106,7 +106,10 @@ class MediaGoblinApp(object):
         setup_plugins()
 
         # Set up the database
-        self.db = setup_database(app_config['run_migrations'])
+        if DISABLE_GLOBALS:
+            self.db_manager = setup_database(app_config['run_migrations'])
+        else:
+            self.db = setup_database(app_config['run_migrations'])
 
         # Quit app if need to run dbupdate
         ## NOTE: This is currently commented out due to session errors..
@@ -191,7 +194,9 @@ class MediaGoblinApp(object):
         # Also attach a few utilities from request.app for convenience?
         ctx.app = self
 
-        ctx.db = self.db
+        if not DISABLE_GLOBALS:
+            ctx.db = self.db
+
         ctx.staticdirect = self.staticdirector
 
         # Do special things if this is a request
@@ -300,7 +305,11 @@ class MediaGoblinApp(object):
 
         # get the Http response from the controller
         try:
-            response = controller(request)
+            if DISABLE_GLOBALS:
+                with self.db_manager.session_scope() as request.db:
+                    response = controller(request)
+            else:
+                response = controller(request)
         except HTTPException as e:
             response = render_http_exception(
                 request, e, e.get_description(environ))
@@ -326,9 +335,10 @@ class MediaGoblinApp(object):
         try:
             return self.call_backend(environ, start_response)
         finally:
-            # Reset the sql session, so that the next request
-            # gets a fresh session
-            self.db.reset_after_request()
+            if not DISABLE_GLOBALS:
+                # Reset the sql session, so that the next request
+                # gets a fresh session
+                self.db.reset_after_request()
 
 
 def paste_app_factory(global_config, **app_config):