[Checkins] SVN: Zope3/trunk/src/zope/app/form/browser/ input widgets for IBool fields should avoid calling themselves required

Fred L. Drake, Jr. fdrake at gmail.com
Thu Aug 17 11:55:53 EDT 2006


Log message for revision 69613:
  input widgets for IBool fields should avoid calling themselves required
  if there is no opportunity for entering the "no value" value
  

Changed:
  U   Zope3/trunk/src/zope/app/form/browser/boolwidgets.py
  U   Zope3/trunk/src/zope/app/form/browser/tests/test_checkboxwidget.py

-=-
Modified: Zope3/trunk/src/zope/app/form/browser/boolwidgets.py
===================================================================
--- Zope3/trunk/src/zope/app/form/browser/boolwidgets.py	2006-08-17 15:45:33 UTC (rev 69612)
+++ Zope3/trunk/src/zope/app/form/browser/boolwidgets.py	2006-08-17 15:55:52 UTC (rev 69613)
@@ -37,6 +37,10 @@
     default = 0
     extra = ''
 
+    def __init__(self, context, request):
+        super(CheckBoxWidget, self).__init__(context, request)
+        self.required = False
+
     def __call__(self):
         """Render the widget to HTML."""
         value = self._getFormValue()
@@ -94,19 +98,27 @@
 
 def BooleanRadioWidget(field, request, true=_('on'), false=_('off')):
     vocabulary = SimpleVocabulary.fromItems( ((true, True), (false, False)) ) 
-    return RadioWidget(field, vocabulary, request)
+    widget = RadioWidget(field, vocabulary, request)
+    if field.required:
+        widget.required = False
+    return widget
 
 
 def BooleanSelectWidget(field, request, true=_('on'), false=_('off')):
     vocabulary = SimpleVocabulary.fromItems( ((true, True), (false, False)) )
     widget = SelectWidget(field, vocabulary, request)
     widget.size = 2
+    if field.required:
+        widget.required = False
     return widget
 
 
 def BooleanDropdownWidget(field, request, true=_('on'), false=_('off')):
     vocabulary = SimpleVocabulary.fromItems( ((true, True), (false, False)) )
-    return DropdownWidget(field, vocabulary, request)
+    widget = DropdownWidget(field, vocabulary, request)
+    if field.required:
+        widget.required = False
+    return widget
 
 
 _msg_true = _("True")

Modified: Zope3/trunk/src/zope/app/form/browser/tests/test_checkboxwidget.py
===================================================================
--- Zope3/trunk/src/zope/app/form/browser/tests/test_checkboxwidget.py	2006-08-17 15:45:33 UTC (rev 69612)
+++ Zope3/trunk/src/zope/app/form/browser/tests/test_checkboxwidget.py	2006-08-17 15:55:52 UTC (rev 69613)
@@ -163,7 +163,13 @@
         del self._widget.request.form['field.foo.used']
         self.assertRaises(MissingInputError, self._widget.getInputValue)
 
+    def test_required(self):
+        # checkbox widgets are never required, since there's no way to
+        # set it to "no value"
+        self.failIf(self._widget.required)
+        self.assert_(self._widget.context.required)
 
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(CheckBoxWidgetTest),



More information about the Checkins mailing list