Answering my own question. I've realised that I was trying to do too much within DTML by trying to import Python modules. I thought wrongly that you could embed Python code within DTML (other than the basic string and math services in _) The solution seems to be to use external methods instead. Using the same example =
How to set a variable 'mytime' to the current time ?
<dtml-call "REQUEST.set('mytime', 'ZopeTime fmt=%H:%M')">
sets it to the string 'ZopeTime fmt=%H:%M'
Is there no equivalent of eval() ?
The solution was simply to create an external method called 'timenow' to return the time. Then use <dtml-call "REQUEST.set('mytime', timenow)"> In fact, external methods look like the way to go for a lot of data massaging. For example, in my CGI programs I currently take the results from a SQL query and run some of the fields through customised Python functions to further format them. It seems that the best way to do this with Zope is to write an external method for each function. However, this does mean that I'm going to have dozens if not hundreds of external methods; but at least they're easier to read than dtml. Henry ____________________________________________________________________ Get free email and a permanent address at http://www.netaddress.com/?N=1