[Checkins] SVN: plone.z3cform/trunk/plone/z3cform/traversal. Should be raising a TraversalError here rather than returning none

Laurence Rowe l at lrowe.co.uk
Mon Feb 21 12:46:24 EST 2011


Log message for revision 120505:
  Should be raising a TraversalError here rather than returning none

Changed:
  U   plone.z3cform/trunk/plone/z3cform/traversal.py
  U   plone.z3cform/trunk/plone/z3cform/traversal.txt

-=-
Modified: plone.z3cform/trunk/plone/z3cform/traversal.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/traversal.py	2011-02-21 17:32:51 UTC (rev 120504)
+++ plone.z3cform/trunk/plone/z3cform/traversal.py	2011-02-21 17:46:24 UTC (rev 120505)
@@ -4,6 +4,8 @@
 from zope.component import adapts
 
 from zope.traversing.interfaces import ITraversable
+from zope.traversing.interfaces import TraversalError
+
 from zope.publisher.interfaces.browser import IBrowserRequest
 
 from z3c.form.interfaces import IForm
@@ -58,14 +60,13 @@
         noLongerProvides(self.request, IDeferSecurityCheck)
         
         # Find the widget - it may be in a group
+        widget = None
         if name in form.widgets:
             widget = form.widgets.get(name)
         elif getattr(aq_base(form), 'groups', None) is not None:
             for group in form.groups:
                 if name in group.widgets:
                     widget = group.widgets.get(name)
-        else:
-            raise KeyError(name)
         
         # Make the parent of the widget the traversal parent.
         # This is required for security to work in Zope 2.12
@@ -73,7 +74,7 @@
             widget.__parent__ = aq_inner(self.context)
             return widget
         
-        return None
+        raise TraversalError(name)
 
 class WrapperWidgetTraversal(FormWidgetTraversal):
     """Allow traversal to widgets via the ++widget++ namespace. The context

Modified: plone.z3cform/trunk/plone/z3cform/traversal.txt
===================================================================
--- plone.z3cform/trunk/plone/z3cform/traversal.txt	2011-02-21 17:32:51 UTC (rev 120504)
+++ plone.z3cform/trunk/plone/z3cform/traversal.txt	2011-02-21 17:46:24 UTC (rev 120505)
@@ -160,10 +160,10 @@
 
 Please note that this point, the form has been updated, but not rendered.
 
-When a form field does not exist a KeyError is raised.
+When a form field does not exist a LocationError is raised.
 
     >>> traverser = getMultiAdapter((form, request), name=u"widget")
     >>> traverser.traverse('missing', [])
     Traceback (most recent call last):
     ...
-    KeyError: 'missing'
+    LocationError: 'missing'



More information about the checkins mailing list