aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/gmg_commands/shell.py
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2014-11-30 16:14:05 -0600
committerChristopher Allan Webber <cwebber@dustycloud.org>2014-12-03 15:40:57 -0600
commita4768df0ca2e956f245e0833331ed8abb203937a (patch)
treedf90466eef7ad4e739d703c1a98b8dd4fdd802a4 /mediagoblin/gmg_commands/shell.py
parent9d82dff6fb4738b4efb1a7d3280562578f54ed08 (diff)
downloadmediagoblin-a4768df0ca2e956f245e0833331ed8abb203937a.tar.lz
mediagoblin-a4768df0ca2e956f245e0833331ed8abb203937a.tar.xz
mediagoblin-a4768df0ca2e956f245e0833331ed8abb203937a.zip
Context objects now use a contextmanager (and update gmg shell to use it)
This means that we have a really convenient way to make sure that you have a context/request that threads its way through the application, where everything needed gets "shut down" appropriately by the end. You always get a context object via a context manager! And by the time you're done with it, things should be cleaned up.
Diffstat (limited to 'mediagoblin/gmg_commands/shell.py')
-rw-r--r--mediagoblin/gmg_commands/shell.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/mediagoblin/gmg_commands/shell.py b/mediagoblin/gmg_commands/shell.py
index 70e11404..4d3ec241 100644
--- a/mediagoblin/gmg_commands/shell.py
+++ b/mediagoblin/gmg_commands/shell.py
@@ -35,7 +35,8 @@ if DISABLE_GLOBALS:
"----------------------\n"
"Available vars:\n"
" - app: instantiated mediagoblin application\n"
- " - db: database session\n")
+ " - db: database session\n"
+ " - ctx: context object\n")
else:
SHELL_BANNER = (
"GNU MediaGoblin shell!\n"
@@ -43,7 +44,8 @@ else:
"Available vars:\n"
" - app: instantiated mediagoblin application\n"
" - mg_globals: mediagoblin.globals\n"
- " - db: database instance\n")
+ " - db: database instance\n"
+ " - ctx: context object\n")
def py_shell(**user_namespace):
"""
@@ -75,11 +77,12 @@ def shell(args):
"""
app = commands_util.setup_app(args)
- def run_shell(db):
+ def run_shell(db, ctx):
user_namespace = {
'mg_globals': mg_globals,
'app': app,
- 'db': db}
+ 'db': db,
+ "ctx": ctx}
if args.ipython:
ipython_shell(**user_namespace)
@@ -88,8 +91,6 @@ def shell(args):
if not ipython_shell(**user_namespace):
py_shell(**user_namespace)
- if DISABLE_GLOBALS:
- with app.db_manager.session_scope() as db:
- run_shell(db)
- else:
- run_shell(mg_globals.database)
+ with app.gen_context() as ctx:
+ db = ctx.db
+ run_shell(db, ctx)