Commit 5968de52 authored by Yoshinori Okuji's avatar Yoshinori Okuji

Support a new type datetime in sqlvar.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@2952 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 3109299f
...@@ -1727,6 +1727,7 @@ Expression.__hash__ = Expression_hash ...@@ -1727,6 +1727,7 @@ Expression.__hash__ = Expression_hash
# dtml-sqlvar patch to convert None to NULL # dtml-sqlvar patch to convert None to NULL
from Shared.DC.ZRDB.sqlvar import SQLVar from Shared.DC.ZRDB.sqlvar import SQLVar
from Shared.DC.ZRDB import sqlvar
from string import atoi from string import atoi
def SQLVar_render(self, md): def SQLVar_render(self, md):
...@@ -1755,7 +1756,42 @@ def SQLVar_render(self, md): ...@@ -1755,7 +1756,42 @@ def SQLVar_render(self, md):
if not v and args.has_key('optional') and args['optional']: if not v and args.has_key('optional') and args['optional']:
return 'null' return 'null'
raise ValueError, ( raise ValueError, (
'Invalid int value %r for <em>%s</em>' % (v, name)) 'Invalid integer value for <em>%s</em>' % name)
elif t=='float':
try:
if type(v) is StringType:
if v[-1:]=='L':
v=v[:-1]
atof(v)
else: v=str(float(v))
except:
if not v and args.has_key('optional') and args['optional']:
return 'null'
raise ValueError, (
'Invalid floating-point value for <em>%s</em>' % name)
# Patched by yo
elif t=='datetime':
if v is None:
if args.has_key('optional') and args['optional']:
return 'null'
else:
raise ValueError, (
'Invalid datetime value for <em>%s</em>: %r' % (name, v))
try:
if hasattr(v, 'ISO'):
v=v.ISO()
if hasattr(v, 'strftime'):
v=v.strftime('%Y-%m-%d %H:%M:%S')
else: v=str(v)
except:
if not v and args.has_key('optional') and args['optional']:
return 'null'
raise ValueError, (
'Invalid datetime value for <em>%s</em>: %r' % (name, v))
v=md.getitem('sql_quote__',0)(v)
# End of patch
else: else:
# Patched by yo # Patched by yo
if v is None: if v is None:
...@@ -1764,7 +1800,8 @@ def SQLVar_render(self, md): ...@@ -1764,7 +1800,8 @@ def SQLVar_render(self, md):
else: else:
raise ValueError, ( raise ValueError, (
'Invalid string value for <em>%s</em>' % name) 'Invalid string value for <em>%s</em>' % name)
# End of patch
if not isinstance(v, (str, unicode)): if not isinstance(v, (str, unicode)):
v=str(v) v=str(v)
if not v and t=='nb': if not v and t=='nb':
...@@ -1780,8 +1817,13 @@ def SQLVar_render(self, md): ...@@ -1780,8 +1817,13 @@ def SQLVar_render(self, md):
return v return v
# Patched by yo. datetime is added.
valid_type={'int':1, 'float':1, 'string':1, 'nb': 1, 'datetime' : 1}.has_key
SQLVar.render = SQLVar_render SQLVar.render = SQLVar_render
SQLVar.__call__ = SQLVar_render SQLVar.__call__ = SQLVar_render
sqlvar.valid_type = valid_type
###################################################################################### ######################################################################################
# CMFCatalogAware patch for accepting arbitrary parameters. # CMFCatalogAware patch for accepting arbitrary parameters.
......
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