Josef Albert Meile wrote:
Hi Bill,
--- In zope@yahoogroups.com, Bill Hewitt <wphewitt@c...> wrote:
I have finally given up on the complexity of ZClasses.... So, nowI am porting my ZClasses to Python Classes.. Here is the rub: How do I get the Python Class to recognize DTML Methods
You don't. When you write Python Products you use DTMLFile which isn't really the same thing. But they act pretty much the same so you don't need to worry about that :-)
I have a DTML method called "getDate" and I *assume* that I call it from inside the Python class with something like: getDate = HTMLFile('dtml/getDate', globals())
You are using the wrong method, you have to use:
Yes. DTML Files being "DTML methodish" also have the call signature method(client, REQUEST). Calling DTMLFile from the the Python code I usually send self, REQUEST=REQUEST to it, like this: class ProductClass(bla bla, inherit stuff): security = ClassSecurityInfo() security.declareProtected('View', 'manage_me') manage_me = DTMLFile('dtml/manage_me', globals()) security.declareProtected('View', 'call_me') def call_me(self, REQUEST=None): """You need a docstring to be web callable""" return self.manage_me(self,REQUEST=REQUEST)
but when I try to use this, "'getDate' is not defined" is what is returned from Zope....
Have you setup security? Are you accessing the getDate directly or do you call it?
So, how does one include DTML Methods, PythonScripts, etc.... as methods in Python Classes?
If you are going to use python classes, then you had better define your PythonScripts inside your class.
Finally, two advices: 1) try to use ZPT instead of DTML. The first one is better since content and logic separation is clearer.
Actually it separates logic from markup. You still can write sludgy logic in a ZPT if you like to as you could not write logic in DTML. A template file will always have logic in it if it's not part of an transformational template system such as XSLT. But that of course is not a very import piece of information, TAL is the future proof way in the Zope community all though I prefer DTML my self because I find my self writing far more readable stuff in DTML that in TAL.