From 82fefc4220a26b37484d2c79db4fdaeb9aebf7e9 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Thu, 28 May 2009 13:49:18 +0000 Subject: - Add a ``get_app`` API functions to the ``paster`` module. This obtains a WSGI application from a config file given a config file name and a section name. See the ``repoze.bfg.paster`` API docs for more information. - Add a new module named ``scripting``. It contains a ``get_root`` API function, which, provided a Router instance, returns a traversal root object and a "closer". See the ``repoze.bfg.scripting`` API docs for more info. --- repoze/bfg/scripting.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 repoze/bfg/scripting.py (limited to 'repoze/bfg/scripting.py') diff --git a/repoze/bfg/scripting.py b/repoze/bfg/scripting.py new file mode 100644 index 000000000..5399b7d77 --- /dev/null +++ b/repoze/bfg/scripting.py @@ -0,0 +1,20 @@ +def get_root(app, environ=None): + """ Return a tuple composed of ``(root, closer)`` when provided a + ``repoze.bfg.router.Router`` instance as the ``app`` argument. + The ``root`` returned is the application root object. The + ``closer`` returned is a callable (accepting no arguments) that + should be called when your scripting application is finished using + the root. If ``environ`` is not None, it is used as the + environment passed to the BFG application root factory. An empty + environ is constructed and passed to the root factory if + ``environ`` is None.""" + registry = app.registry + threadlocals = {'registry':registry, 'request':None} + app.threadlocal_manager.push(threadlocals) + if environ is None: + environ = {} + def closer(environ=environ): # keep environ alive via this function default + app.threadlocal_manager.pop() + root = app.root_factory(environ) + return root, closer + -- cgit v1.2.3