Joel Burton wrote:
On Mon, 11 Mar 2002, Tim Hawes wrote:
ZPsycoPG returns datefields from postgress in yyyy/mm/dd format, while postgres' default is yyyy-mm-dd. I need to pass a date to python script for comparison w/ other datefields, but Zope apparently will not allow values to be passed with '/'s in them. Can I change the way ZPsycoPG is returning the date fields in the database? How?
Zope has no problem with passing a string like "2001/01/01" to a Python Script. Why do you think that Zope will apparently not allow values to be passed with "/" in them?
Zope Error Zope has encountered an error while publishing this resource. Error Type: TypeError Error Value: unsupported operand type(s) for / Traceback (innermost last): File /usr/local/zope/2.5.0/lib/python/ZPublisher/Publish.py, line 150, in publish_module File /usr/local/zope/2.5.0/lib/python/ZPublisher/Publish.py, line 114, in publish File /usr/local/zope/2.5.0/lib/python/Zope/__init__.py, line 158, in zpublisher_exception_hook (Object: Projects) File /usr/local/zope/2.5.0/lib/python/ZPublisher/Publish.py, line 98, in publish File /usr/local/zope/2.5.0/lib/python/ZPublisher/mapply.py, line 88, in mapply (Object: ChangeProject) File /usr/local/zope/2.5.0/lib/python/ZPublisher/Publish.py, line 39, in call_object (Object: ChangeProject) File /usr/local/zope/2.5.0/lib/python/OFS/DTMLMethod.py, line 127, in __call__ (Object: ChangeProject) File /usr/local/zope/2.5.0/lib/python/DocumentTemplate/DT_String.py, line 473, in __call__ (Object: ChangeProject) File /usr/local/zope/2.5.0/lib/python/DocumentTemplate/DT_In.py, line 695, in renderwob (Object: ProjectsUpdateResultMethod) File /usr/local/zope/2.5.0/lib/python/DocumentTemplate/DT_Util.py, line 159, in eval (Object: compare_datefield('start_',proj_start)) (Info: compare_datefield) File <string>, line 2, in f File /usr/local/zope/2.5.0/lib/python/Shared/DC/Scripts/Bindings.py, line 252, in __call__ (Object: compare_datefield) File /usr/local/zope/2.5.0/lib/python/Shared/DC/Scripts/Bindings.py, line 283, in _bindAndExec (Object: compare_datefield) File /usr/local/zope/2.5.0/lib/python/Products/PythonScripts/PythonScript.py, line 291, in _exec (Object: compare_datefield) (Info: ({'script': <PythonScript instance at 1235610>, 'context': <r instance at 1383f28>, 'container': <Application instance at dd8220>, 'traverse_subpath': []}, ('start_', DateTime('2002/02/25')), {}, None)) File Script (Python), line 50, in compare_datefield File Script (Python), line 12, in cdate File /usr/local/zope/2.5.0/lib/python/DateTime/DateTime.py, line 668, in __init__ File /usr/local/zope/2.5.0/lib/python/DateTime/DateTime.py, line 276, in _calcSD TypeError: (see above) When I try to put this value in when I test the python script 'compare_date', it has no problems. I pass the value in dtml, I get this error. This is what has led me to believe that the problem is in how Zope handles it. Now, looking at it, perhaps the problem is in how I am calling it in dtml? Here is the dtml code that I use inside a database query sequence: <dtml-var expr="compare_datefield('start_',proj_start)"> The first parameter is for an input tag variable name that is prepended to the default, the second (proj_start) is a dtml var containing a datefield for the script to compare. The end result is html code containing individual selection boxes for day, month and year, w/ the default selection at what is already in the database. I have another version of this script working that compares the DateTime() value with all date ranges to produce defaults for the current day, month, and year, and compare_date() does the same thing except that it creates a new DateTime() object from the second parameter that is passed to it.