From 67b8a1ceda0d73739b18045c8b405a1d22b4480a Mon Sep 17 00:00:00 2001 From: Fernando Correa Neto Date: Tue, 9 Dec 2008 23:16:56 +0000 Subject: Add context.root to router so the root model can be easily accessed from a view --- CHANGES.txt | 5 +++++ docs/narr/traversal.rst | 7 +++++++ repoze/bfg/router.py | 1 + repoze/bfg/traversal.py | 5 ++++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 566aab498..a310d2c27 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +0.5.4 (12/9/2008) + + - Add ``request.root`` to ``router.Router`` in order to have easy + access to the application root. + 0.5.3 (12/7/2008) - Remove the ``ITestingTemplateRenderer`` interface. When diff --git a/docs/narr/traversal.rst b/docs/narr/traversal.rst index f85c012e6..ead48aac4 100644 --- a/docs/narr/traversal.rst +++ b/docs/narr/traversal.rst @@ -272,3 +272,10 @@ The :term:`view name` will always be available to a view as the single string (possibly the empty string if we're rendering a default view). +The :term:`root` will always be available to a view as the +``root`` attribute of the :term:`request` object. It will be the +root model instance of the current application. + +The :term:`context` will always be available to a view as the +``context`` attribute of the :term:`request` object. It will be the +model instance of the current application. \ No newline at end of file diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py index cd040c0c8..89101cb5e 100644 --- a/repoze/bfg/router.py +++ b/repoze/bfg/router.py @@ -48,6 +48,7 @@ class Router(object): settings = queryUtility(ISettings) context, name, subpath = traverser(environ) + request.root = root request.context = context request.view_name = name request.subpath = subpath diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index 4c5bb930d..61b66c040 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -66,7 +66,10 @@ class ModelGraphTraverser(object): def find_root(model): """ Find the root node in the graph to which ``model`` - belongs. Note that ``model`` should be :term:`location`-aware.""" + belongs. Note that ``model`` should be :term:`location`-aware. + Note that the root node is available in the request object by + accessing the ``request.root`` attribute. + """ for location in lineage(model): if location.__parent__ is None: model = location -- cgit v1.2.3