[Checkins] SVN: z3c.form/trunk/ Make error messages for number parsing error more user-friendly.

Stephan Richter srichter at cosmos.phy.tufts.edu
Thu Jul 19 14:30:45 EDT 2007


Log message for revision 78188:
  Make error messages for number parsing error more user-friendly.
  

Changed:
  U   z3c.form/trunk/CHANGES.txt
  U   z3c.form/trunk/src/z3c/form/converter.py
  U   z3c.form/trunk/src/z3c/form/converter.txt

-=-
Modified: z3c.form/trunk/CHANGES.txt
===================================================================
--- z3c.form/trunk/CHANGES.txt	2007-07-19 18:22:08 UTC (rev 78187)
+++ z3c.form/trunk/CHANGES.txt	2007-07-19 18:30:45 UTC (rev 78188)
@@ -2,6 +2,12 @@
 CHANGES
 =======
 
+Version 1.6.0 (?/??/2007)
+-------------------------
+
+- Feature: Provide more user-friendly error messages for number formatting.
+
+
 Version 1.5.0 (7/18/2007)
 -------------------------
 

Modified: z3c.form/trunk/src/z3c/form/converter.py
===================================================================
--- z3c.form/trunk/src/z3c/form/converter.py	2007-07-19 18:22:08 UTC (rev 78187)
+++ z3c.form/trunk/src/z3c/form/converter.py	2007-07-19 18:30:45 UTC (rev 78188)
@@ -88,6 +88,7 @@
     """A general data converter for numbers."""
 
     type = None
+    errorMessage = None
 
     def __init__(self, field, widget):
         super(NumberDataConverter, self).__init__(field, widget)
@@ -108,25 +109,28 @@
         try:
             return self.formatter.parse(value)
         except zope.i18n.format.NumberParseError, err:
-            raise FormatterValidationError(err.args[0], value)
+            raise FormatterValidationError(self.errorMessage, value)
 
 class IntegerDataConverter(NumberDataConverter):
     """A data converter for integers."""
     zope.component.adapts(
         zope.schema.interfaces.IInt, interfaces.IWidget)
     type = int
+    errorMessage = _('The entered value is not a valid integer literal.')
 
 class FloatDataConverter(NumberDataConverter):
     """A data converter for integers."""
     zope.component.adapts(
         zope.schema.interfaces.IFloat, interfaces.IWidget)
     type = float
+    errorMessage = _('The entered value is not a valid decimal literal.')
 
 class DecimalDataConverter(NumberDataConverter):
     """A data converter for integers."""
     zope.component.adapts(
         zope.schema.interfaces.IDecimal, interfaces.IWidget)
     type = decimal.Decimal
+    errorMessage = _('The entered value is not a valid decimal literal.')
 
 
 class CalendarDataConverter(BaseDataConverter):

Modified: z3c.form/trunk/src/z3c/form/converter.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/converter.txt	2007-07-19 18:22:08 UTC (rev 78187)
+++ z3c.form/trunk/src/z3c/form/converter.txt	2007-07-19 18:30:45 UTC (rev 78188)
@@ -165,7 +165,7 @@
   Traceback (most recent call last):
   ...
   FormatterValidationError:
-      ("Not a valid number for this pattern u'#,##0.###;-#,##0.###'.", u'fff')
+      (u'The entered value is not a valid integer literal.', u'fff')
 
 The formatter validation error derives from the regular validation error, but
 allows you to specify the message that is output when asked for the
@@ -194,6 +194,14 @@
   >>> floatdc.toFieldValue(u'10,239.43')
   10239.43
 
+The error message, however, is customized to the floating point:
+
+  >>> floatdc.toFieldValue(u'fff')
+  Traceback (most recent call last):
+  ...
+  FormatterValidationError:
+      (u'The entered value is not a valid decimal literal.', u'fff')
+
 The decimal converter works like the other two before.
 
   >>> money = zope.schema.Decimal()
@@ -215,7 +223,15 @@
   >>> decimaldc.toFieldValue(u'10,239.43')
   Decimal("10239.43")
 
+Again, the error message, is customized to the floating point:
 
+  >>> floatdc.toFieldValue(u'fff')
+  Traceback (most recent call last):
+  ...
+  FormatterValidationError:
+      (u'The entered value is not a valid decimal literal.', u'fff')
+
+
 Date Data Converter
 -------------------
 



More information about the Checkins mailing list