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
_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to