On Mon, 09 Feb 2004 17:45:17 +0000 Philip Kilner <phil@xfr.co.uk> wrote:
Hi List,
I'm obviously missing something fundamental about how TALES expressions work - I can't get the simplest thing that works fine in a ZPT to work in a Formulator TALES expression.
Example: -
- In my ZPT, I'm using "user/getUserName", which works perfectly.
- I'd now like to migrate this functionality to a Formulator form, and
it seems to me that the above is a path expression, so "path:user/getUserName" or - since the docs a say that a path expression is the default - the original "user/getUserName" (Which I had understood /was/ a TALES expression) should work. No such luck - I just get variations on the theme of "Key Error" and "global not defined".
I have now descended into that special hell of trying all the combinations and permutations, and have run out of options. Could some
kind soul give me a pointer - this just isn't possible by trial and error, and I've now run out of resources...
Probably Formulator does not supply the global "user" like ZPT does. You might have to resort to: python:modules['AccessControl'].getSecurityManager().getUser().getUserN ame() But that assumes that Formulator supplies "module" which it may not. I would just create a python script called "getUserName" which contains the code: from AccessControl import getSecurityManager return getSecurityManager().getUser().getUserName() Then use: here/getUserName as the path expression (assuming Formulator uses "here"). As you can see Products are free to create whatever variable bindings they like for their TALES expressions. hth, -Casey