Am 16.11.2006, 21:43 Uhr, schrieb Dieter Maurer <[EMAIL PROTECTED]>:

I am not surprised that you are formatting a database result.
I am surprised that in the byte code there is an "import time"
(or an import at all).
I tried to reproduce your problem and failed:
bin/zopectl debug
from datetime import datetime
from AccessControl import allow_type
allow_type(datetime)
from Products.PythonScripts.PythonScript import PythonScript
ps=PythonScript('t')
ps.write('''##parameters=dt
... return dt.strftime('%d.%m.%Y')
... ''')
dt=datetime(2006,12,1,20,0,0)
ps.__of__(app)(dt)
'01.12.2006'
And this is the Python Script's code:

f=ps._v_f
from dis import dis
dis(f.func_code)
  1           0 LOAD_GLOBAL              0 (_getattr_)
              3 LOAD_FAST                0 (dt)
              6 LOAD_CONST               1 ('strftime')
              9 CALL_FUNCTION            2
             12 LOAD_CONST               2 ('%d.%m.%Y')
             15 CALL_FUNCTION            1
             18 RETURN_VALUE
             19 LOAD_CONST               0 (None)
             22 RETURN_VALUE
I am using Zope 2.8.1 with Python 2.4.1.

Interesting - in my script there is actually no import just a formatting statement for something that is subsequently passed to an external method to generate a PDF but is the same error I get when using datetime types. The interesting thing is that allow_type explicitly says that extension types like datetime will not work. I have used "allow_type" in a generic "Tools" script so that I can use in scripts or PageTemplates (which is where it should be allowed to be used). I will give your script a go and see how that works.

Thanks very much for your help and your profound understanding of the internals of Zope.

Charlie
_______________________________________________
ZPT mailing list
ZPT@zope.org
http://mail.zope.org/mailman/listinfo/zpt

Reply via email to