Garito wrote at 2008-10-11 16:39 +0200:
Did you imagine another way to do what I need to do?
I have not followed intensively "what you need to do". Thus, what follows may not be adequate. When I remember right, then a PageTemplate's namespace is passed on to a "Script (Python)" when this script binds "namespace". Thus, this way you get access to the variables defined in the template. A simple path "var/s1/.../sn" is roughly requivalent to x = var.restricedTraverse("s1/.../sn") if callable(x): x = x() # "callable" may not be available in "Script (Python)" If the path contains "?var", these must be resolved beforehand. More complex paths "p1 | p2 | ... pn" are roughly equivalent to exc = None for p in (p1, p2, ... pn): try: return path1(p, ...) except <some standard exceptions>: exc = sys.exc_info() if exc is not None: raise exc[0], exc[1], exc[2] The most difficult part are for paths where "pn" is not a path expression but an arbitrary one. In this case, the concrete TALES implementation will be required for an interpretation. Along this outline, a function "path(path_expr, variable_binding)" can be defined which roughly behaves like "path(path_expr)" in a PageTemplate with the current variable binding expressed as "variable_binding". For simple cases, this function could be implemented in untrusted code. Complex cases will require access to the TALES implementation and therefore probably trusted code. -- Dieter