[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