Commit 766d3a96 authored by Andreas Jung's avatar Andreas Jung

added converter for international date formats

parent b08647d7
...@@ -10,10 +10,11 @@ ...@@ -10,10 +10,11 @@
# FOR A PARTICULAR PURPOSE # FOR A PARTICULAR PURPOSE
# #
############################################################################## ##############################################################################
__version__='$Revision: 1.20 $'[11:-2] __version__='$Revision: 1.21 $'[11:-2]
import re import re
from types import ListType, TupleType, UnicodeType from types import ListType, TupleType, UnicodeType
from DateTime import DateTime
from cgi import escape from cgi import escape
def field2string(v): def field2string(v):
...@@ -47,7 +48,7 @@ def field2required(v): ...@@ -47,7 +48,7 @@ def field2required(v):
raise ValueError, 'No input for required field<p>' raise ValueError, 'No input for required field<p>'
def field2int(v): def field2int(v):
if type(v) in (ListType, TupleType): if isinstance(v, (ListType, TupleType)):
return map(field2int, v) return map(field2int, v)
v = field2string(v) v = field2string(v)
if v: if v:
...@@ -59,7 +60,7 @@ def field2int(v): ...@@ -59,7 +60,7 @@ def field2int(v):
raise ValueError, 'Empty entry when <strong>integer</strong> expected' raise ValueError, 'Empty entry when <strong>integer</strong> expected'
def field2float(v): def field2float(v):
if type(v) in (ListType, TupleType): if isinstance(v, (ListType, TupleType)):
return map(field2float, v) return map(field2float, v)
v = field2string(v) v = field2string(v)
if v: if v:
...@@ -73,7 +74,7 @@ def field2float(v): ...@@ -73,7 +74,7 @@ def field2float(v):
'Empty entry when <strong>floating-point number</strong> expected') 'Empty entry when <strong>floating-point number</strong> expected')
def field2long(v): def field2long(v):
if type(v) in (ListType, TupleType): if isinstance(v, (ListType, TupleType)):
return map(field2long, v) return map(field2long, v)
v = field2string(v) v = field2string(v)
# handle trailing 'L' if present. # handle trailing 'L' if present.
...@@ -92,7 +93,7 @@ def field2tokens(v): ...@@ -92,7 +93,7 @@ def field2tokens(v):
return v.split() return v.split()
def field2lines(v): def field2lines(v):
if type(v) in (ListType, TupleType): if isinstance(v, (ListType, TupleType)):
result=[] result=[]
for item in v: for item in v:
result.append(str(item)) result.append(str(item))
...@@ -100,7 +101,7 @@ def field2lines(v): ...@@ -100,7 +101,7 @@ def field2lines(v):
return field2text(v).split('\n') return field2text(v).split('\n')
def field2date(v): def field2date(v):
from DateTime import DateTime
v = field2string(v) v = field2string(v)
try: try:
v = DateTime(v) v = DateTime(v)
...@@ -108,6 +109,14 @@ def field2date(v): ...@@ -108,6 +109,14 @@ def field2date(v):
raise DateTime.SyntaxError, escape(e) raise DateTime.SyntaxError, escape(e)
return v 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): def field2boolean(v):
return not not v return not not v
...@@ -152,6 +161,7 @@ type_converters = { ...@@ -152,6 +161,7 @@ type_converters = {
'long': field2long, 'long': field2long,
'string': field2string, 'string': field2string,
'date': field2date, 'date': field2date,
'date_international': field2date_international,
'required': field2required, 'required': field2required,
'tokens': field2tokens, 'tokens': field2tokens,
'lines': field2lines, 'lines': field2lines,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment