Hi all, I have a situation where I pass some variables *from* an external method, to some DTML, which then returns it to the external method (which *then* presents the finished product to the user). Sounds convoluted, and it is, but it's the only way I can think of that will let me do initial processing (for speed), but will allow me to change the actual layout displayed to the user without messing with external products (it also seems more flexible). As an example, here's a snippet from my external method (make_html3.py) that will generate a <P> tag around some content, given that the 'type' of element is text (I have quite a few, such as 'item' and 'modulecontributor') if thetag == 'text': if theclass: # does it have a class? used for Cascading Style Sheets. html.seq_prefix = "<P CLASS='%s'>" % theclass html = "<P CLASS='%s'>%s" % (theclass, content) # html = self.Actors.RENDER.dopara(theclass=theclass, content=content) else: html = "<P>%s" % content return html If the commented line is removed, and I comment the preceding one, my DTML method (dopara) gets called; <table><tr><td bgcolor=silver><dtml-var content></td></tr></table> and all is well. Now all is fine and dandy *until* I want to use <dtml-in constructs. I want to do this because for one of my 'type's is an email address for data on module contributors (title, address, tel etc.) I've tried with full ZSQL queries and they didn't work (but they DO work if I try them from within the Zope framework). I ended up with this DTML, called modulecontributor. SQLPhone is a folder where I'm putting my SQL methods, one of which is info_from_email. <table> <tr><td colspan=2 bgcolor=silver>This data is being dynamically generated from a database</td></tr> <dtml-in "Actors.SQLPhone.info_from_email(email=content)"> <tr> <td><dtml-var Title> <dtml-var Initials> <dtml-var Surname><td><td> </td> </tr> <tr> <td>Department:</td><td><dtml-var Department_Name></td> </tr> </dtml-in> </table> the relevant Python looks like this if theclass == 'modulecontributor': html = self.Actors.RENDER.modulecontributor(content=content) return html and the traceback :( looks like this... <!-- Traceback (innermost last): File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/ZPublisher/Publis h.py, line 256, in publish_module File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/ZPublisher/Publis h.py, line 161, in publish File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/ZPublisher/mapply .py, line 154, in mapply (Object: cascade2) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/ZPublisher/Publis h.py, line 98, in call_object (Object: cascade2) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/OFS/DTMLMethod.py , line 150, in __call__ (Object: cascade2) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/OFS/DTMLMethod.py , line 145, in __call__ (Object: cascade2) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/DocumentTemplate/ DT_String.py, line 502, in __call__ (Object: cascade2) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/DocumentTemplate/ DT_In.py, line 689, in renderwob (Object: Actors.SQL.get_children(parent=child)) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/OFS/DTMLMethod.py , line 140, in __call__ (Object: show_html) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/DocumentTemplate/ DT_String.py, line 502, in __call__ (Object: show_html) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/DocumentTemplate/ DT_In.py, line 689, in renderwob (Object: Actors.SQL.get_entry(tag_id=child)) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/DocumentTemplate/ DT_Util.py, line 315, in eval (Object: make_html(content, src, thetag, level, tagclass, header)) File <string>, line 0, in ? File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/Products/External Method/ExternalMethod.py, line 259, in __call__ (Object: make_html) (Info: ((A.M.McDonald', None, 'topic', None, 'modulecontributor', None), {}, None)) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/Products/External Method/ExternalMethod.py, line 254, in __call__ (Object: make_html) (Info: (('P.M.Bradley', None, 'topic', None, 'modulecontributor', None), {}, None)) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/Extensions/make_html3.py, line 19, in make_html (Object: ElementWithAttributes) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/OFS/DTMLDocument. py, line 162, in __call__ (Object: modulecontributor) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/DocumentTemplate/ DT_String.py, line 502, in __call__ (Object: modulecontributor) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/DocumentTemplate/ DT_In.py, line 631, in renderwob (Object: info_from_email(email=content)) File /home/nnle/Zope-2.0.0b1-solaris-2.6-sparc/lib/python/DocumentTemplate/ DT_Util.py, line 315, in eval (Object: info_from_email(email=content)) File <string>, line 0, in ? NameError: (see above) --> I reduced things down until the <dtml-in> was looping over a token property. Still no joy. Any ideas? tone. ------ Dr Tony McDonald, FMCC, Networked Learning Environments Project http://nle.ncl.ac.uk/ The Medical School, Newcastle University Tel: +44 191 222 5888 Fingerprint: 3450 876D FA41 B926 D3DD F8C3 F2D0 C3B9 8B38 18A2