[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