diff options
Diffstat (limited to 'repoze/bfg/scripting.py')
| -rw-r--r-- | repoze/bfg/scripting.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/repoze/bfg/scripting.py b/repoze/bfg/scripting.py new file mode 100644 index 000000000..9e83e2fe8 --- /dev/null +++ b/repoze/bfg/scripting.py @@ -0,0 +1,18 @@ +_GET_ROOT_ENVIRON = {} + +def get_root(router): + """ Given a :mod:`repoze.bfg` Router application instance as its + ``router`` argument, this callable returns the traversal root of + graph as defined by the application's root factory. It also has + the effect of pushing a new registry and request on to the + internal thread local stack managed by BFG so that registry + lookups work properly. + + .. warning:: This function should never be called from *within* a + BFG model or view, only from top-level scripts which wish to + get the root of a graph to do offline processing.""" + registry = router.registry + threadlocals = {'registry':registry, 'request':None} + router.threadlocal_manager.push(threadlocals) + return router.root_factory(_GET_ROOT_ENVIRON) + |
