Hi Zopists, I have created a ZClass (TestClass) with an external python function 'foo'. Now I would like to create an instance (myTest) of my TestClass in a dtml template and call its method foo. When I put the code below <dtml-let myTest="_['Control_Panel']['Products']['TestProduct']['TestClass']"> <dtml-var "myTest.foo()"> </dtml-let> I can see this error: Error Type: AttributeError Error Value: __call__ When I looked at the returned type of myTest.foo, the Zope says that it is an instance of Folder. Can anybody help me how to call create instances of ZClasses programatically only in the name-space (not in ZODB) and call their functions? Petr -- Petr Knápek NEXTRA Czech Republic, s.r.o., Veveří 102, 659 10 Brno, Czech Republic e-mail: mailto:petr.knapek@nextra.cz tel:+420-5-41 558 394 FAX:+420-5-41 558 390
Petr Knapek wrote:
When I put the code below <dtml-let myTest="_['Control_Panel']['Products']['TestProduct']['TestClass']"> <dtml-var "myTest.foo()"> </dtml-let>
I can see this error:
Error Type: AttributeError Error Value: __call__
This is 'cos the implementation of _[] is really broken IMHO as it behaves differently to normal python! _[] will call the returned object if it can. In this case, it looks like it's getting it wrong and trying to call something which isn't :( IIRC, you should be adding your product with something like: <dtml-with "manage_addProduct['MyTest']"> <dtml-call "manage_addMyTest('your','params','here')"> </dtml-with>
Can anybody help me how to call create instances of ZClasses programatically only in the name-space (not in ZODB) and call their functions?
Non-persistent creation of ZClass objects, sorry, don't know how to do that :( cheers, Chris
participants (2)
-
Chris Withers -
Petr Knapek