[Zope-Checkins] CVS: Zope/lib/python/ZPublisher - Converters.py:1.21

Andreas Jung andreas@andreas-jung.com
Sat, 30 Nov 2002 03:06:24 -0500


Update of /cvs-repository/Zope/lib/python/ZPublisher
In directory cvs.zope.org:/tmp/cvs-serv17113/lib/python/ZPublisher

Modified Files:
	Converters.py 
Log Message:
added converter for international date formats


=== Zope/lib/python/ZPublisher/Converters.py 1.20 => 1.21 ===
--- Zope/lib/python/ZPublisher/Converters.py:1.20	Mon Oct 14 11:01:49 2002
+++ Zope/lib/python/ZPublisher/Converters.py	Sat Nov 30 03:06:22 2002
@@ -14,6 +14,7 @@
 
 import re
 from types import ListType, TupleType, UnicodeType
+from DateTime import DateTime
 from cgi import escape
 
 def field2string(v):
@@ -47,7 +48,7 @@
     raise ValueError, 'No input for required field<p>'
 
 def field2int(v):
-    if type(v) in (ListType, TupleType):
+    if isinstance(v, (ListType, TupleType)):
         return map(field2int, v)
     v = field2string(v)
     if v:
@@ -59,7 +60,7 @@
     raise ValueError, 'Empty entry when <strong>integer</strong> expected'
 
 def field2float(v):
-    if type(v) in (ListType, TupleType):
+    if isinstance(v, (ListType, TupleType)):
         return map(field2float, v)
     v = field2string(v)
     if v:
@@ -73,7 +74,7 @@
         'Empty entry when <strong>floating-point number</strong> expected')
 
 def field2long(v):
-    if type(v) in (ListType, TupleType):
+    if isinstance(v, (ListType, TupleType)):
         return map(field2long, v)
     v = field2string(v)
     # handle trailing 'L' if present.
@@ -92,7 +93,7 @@
     return v.split()
 
 def field2lines(v):
-    if type(v) in (ListType, TupleType):
+    if isinstance(v, (ListType, TupleType)):
         result=[]
         for item in v:
             result.append(str(item))
@@ -100,7 +101,7 @@
     return field2text(v).split('\n')
 
 def field2date(v):
-    from DateTime import DateTime
+
     v = field2string(v)
     try:
         v = DateTime(v)
@@ -108,6 +109,14 @@
         raise DateTime.SyntaxError, escape(e)
     return v
 
+def field2date_international(v):
+    v = field2string(v)
+    try:
+        v = DateTime(v, datefmt="international")
+    except DateTime.SyntaxError, e:
+        raise DateTime.SyntaxError, escape(e)
+    return v
+
 def field2boolean(v):
     return not not v
 
@@ -152,6 +161,7 @@
     'long':               field2long,
     'string':             field2string,
     'date':               field2date,
+    'date_international': field2date_international,
     'required':           field2required,
     'tokens':             field2tokens,
     'lines':              field2lines,