[Checkins] SVN: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/d Another bugfix: if the value wasn't specified, we used to get a traceback

Marius Gedminas marius at pov.lt
Thu Nov 16 15:00:55 EST 2006


Log message for revision 71147:
  Another bugfix: if the value wasn't specified, we used to get a traceback
  instead of a proper "input is missing" form error.  The fix is modeled on
  zope.app.form.browser.textwidgets.DateI18nWidget._toFormValue.
  
  The reason for the bug is an unfortunate decision of
  SimpleInputWidget._getCurrentValueFormInput() to return a raw string when
  getInputValue fails.  This causes crashes in SimpleInputWidget._getFormValue,
  because that raw string is passed to _toFormValue, which expects a datetime
  object.
  
  

Changed:
  U   zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py
  U   zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/demo/README.txt

-=-
Modified: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py
===================================================================
--- zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py	2006-11-16 19:49:06 UTC (rev 71146)
+++ zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py	2006-11-16 20:00:54 UTC (rev 71147)
@@ -319,8 +319,11 @@
     def _toFormValue(self, value):
         if value == self.context.missing_value:
             return self._missing
-        value = localizeDateTime(value, self.request)
-        return value.strftime(self._format)
+        if value:
+            value = localizeDateTime(value, self.request)
+            return value.strftime(self._format)
+        else:
+            return u''
 
 
 class DatetimeWidget(DatetimeBase, textwidgets.DatetimeWidget):

Modified: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/demo/README.txt
===================================================================
--- zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/demo/README.txt	2006-11-16 19:49:06 UTC (rev 71146)
+++ zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/demo/README.txt	2006-11-16 20:00:54 UTC (rev 71147)
@@ -33,3 +33,12 @@
     >>> browser.getControl('End Datetime').value = '2006-11-16T19:46:00Z'
     >>> browser.getControl('Change').click()
 
+If we do not fill them in, we get missing value errors
+
+    >>> browser.getControl('Start Date').value = ''
+    >>> browser.getControl('Start Datetime').value = ''
+    >>> browser.getControl('More dates').value = ''
+    >>> browser.getControl('Change').click()
+    >>> 'Required input is missing' in browser.contents
+    True
+



More information about the Checkins mailing list