diff --git a/CHANGES.txt b/CHANGES.txt index 48a3bbf..41f45c8 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -7,6 +7,10 @@ Next release - Add an ``colander.SchemaNode.__iter__`` method, which iterates over the children nodes of a schema node. +- The constructor of a ``colander.SchemaNode`` now accepts a + ``widget`` keyword argument, for use by Deform (it is not used + internally). + 0.7.1 (2010/06/12) ------------------ diff --git a/colander/__init__.py b/colander/__init__.py index 2cadd6b..6018513 100644 --- a/colander/__init__.py +++ b/colander/__init__.py @@ -1158,6 +1158,9 @@ class SchemaNode(object): ``''`` (the empty string). The description is used by higher-level systems (not by Colander itself). + - ``widget``: The 'widget' for this node. Defaults to ``None``. + The widget attribute is not interpreted by Colander itself, it + is only meaningful to higher-level systems such as Deform. """ _counter = itertools.count() @@ -1175,6 +1178,7 @@ class SchemaNode(object): self.name = kw.pop('name', '') self.title = kw.pop('title', self.name.capitalize()) self.description = kw.pop('description', '') + self.widget = kw.pop('widget', None) if kw: raise TypeError('Unknown keyword arguments: %s' % repr(kw)) self.children = list(children) diff --git a/colander/tests.py b/colander/tests.py index b5c8323..d77447c 100644 --- a/colander/tests.py +++ b/colander/tests.py @@ -1296,7 +1296,11 @@ class TestSchemaNode(unittest.TestCase): title='title', description='desc') self.assertEqual(node.description, 'desc') - def test_ctor_with_bad_kwarg(self): + def test_ctor_with_widget(self): + node = self._makeOne(None, 0, widget='abc') + self.assertEqual(node.widget, 'abc') + + def test_ctor_with_bad_kwargs(self): self.assertRaises(TypeError, self._makeOne, None, 0, foo=1) def test_required_true(self):