[Checkins] SVN: z3c.traverser/trunk/ Split functionality,
since not all request types use the concept of
Stephan Richter
srichter at cosmos.phy.tufts.edu
Sat Dec 8 23:31:53 EST 2007
Log message for revision 82206:
Split functionality, since not all request types use the concept of
views.
Changed:
U z3c.traverser/trunk/CHANGES.txt
U z3c.traverser/trunk/src/z3c/traverser/traverser.py
-=-
Modified: z3c.traverser/trunk/CHANGES.txt
===================================================================
--- z3c.traverser/trunk/CHANGES.txt 2007-12-09 04:31:33 UTC (rev 82205)
+++ z3c.traverser/trunk/CHANGES.txt 2007-12-09 04:31:52 UTC (rev 82206)
@@ -2,16 +2,24 @@
CHANGES
=======
+0.2.2 (2007-12-??)
+------------------
+
+- Restructuring: Separated pluggable traverser functionality into two classes
+ for better code reuse.
+
+
0.2.1 (2007-11-92)
------------------
-- bugfix: if viewlet and managers get nested a viewlet was not found if
+- Bugfix: if viewlet and managers get nested a viewlet was not found if
the depth reaches 3 because the context was set to the page and not
- to the context object
-- bugfix: replaced call to _getContextName because it has been removed from
- absoluteURL
+ to the context object.
+- Bugfix: replaced call to ``_getContextName`` because it has been removed
+ from ``absoluteURL``.
+
0.2.0 (2007-10-31)
------------------
Modified: z3c.traverser/trunk/src/z3c/traverser/traverser.py
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/traverser.py 2007-12-09 04:31:33 UTC (rev 82205)
+++ z3c.traverser/trunk/src/z3c/traverser/traverser.py 2007-12-09 04:31:52 UTC (rev 82206)
@@ -24,9 +24,8 @@
_marker = object()
-class PluggableTraverser(object):
- """Generic Pluggable Traverser."""
+class BasePluggableTraverser(object):
implements(interfaces.IPluggableTraverser)
def __init__(self, context, request):
@@ -34,7 +33,7 @@
self.request = request
def publishTraverse(self, request, name):
- # 1. Look at all the traverser plugins, whether they have an answer.
+ # Look at all the traverser plugins, whether they have an answer.
for traverser in subscribers((self.context, request),
interfaces.ITraverserPlugin):
try:
@@ -42,8 +41,21 @@
except NotFound:
pass
- # 2. The traversers did not have an answer, so let's see whether it is
- # a view.
+ raise NotFound(self.context, name, request)
+
+
+class PluggableTraverser(BasePluggableTraverser):
+ """Generic Pluggable Traverser."""
+
+ def publishTraverse(self, request, name):
+ try:
+ return super(PluggableTraverser, self).publishTraverse(
+ request, name)
+ except NotFound:
+ pass
+
+ # The traversers did not have an answer, so let's see whether it is a
+ # view.
view = queryMultiAdapter((self.context, request), name=name)
if view is not None:
return view
More information about the Checkins
mailing list