On Wed, May 31, 2000 at 09:35:58PM +1000, Brad Moulton wrote:
As a newbie i have tried a few variations on the following but the <dtml-if> never returns true
<dtml-in "PARENTS[0].objectValues(['customer'])" sort=lname> <dtml-if "(_['sequence-item'].title == AUTHENTICATED_USER)"> <tr><td>customer </td><td><dtml-var accno></td> .......and other values from "customers" folder with meta type customer </dtml-if> </dtml-in>
This gets many, many people (including myself). Zope-defined Web request variables are usually objects. You are using AUTHENTICATED_USER as if it was a string, which it is not, thus your dtml-if always fails. To get what you want, use (Zope Quick Reference v. 0.9): AUTHENTICATED_USER.getUserName() Something that adds to newbies' confusion on this is that if one writes, <dtml-var AUTHENTICATED_USER> one gets the very username that one expects but yet the <dtml-if> still fails. "I can see the freaking name is right!!!! Why are you failing!!???" is the expurgated version of what I said when I got bit by this one. The reason that <dtml-var AUTHENTICATED_USER> renders nicely to the same string that AUTHENTICATED_USER.getUserName() does is that AUTHENTICATED_USER is an object of type lib/python/AccesControl/User. This object has the getUserName() method but it also has a "__str__" method that Python allows to be defined for any class. This "__str__" method is the way that an object should be represented whenever it is printed. In the case of the User class, lib/python/AccessControl/User.py defines the method __str__ as: def __str__(self): return self.getUserName() ------------------------------------------------------ Andres Corrada-Emmanuel Email: andres@corrada.com ------------------------------------------------------