> In brief: I get a NameError when invoking "filter(...)" from DTML. I thought this
>was a built-in python method, so I'm a bit puzzled.
Python's ideas of 'built-in' is simply any method in the module
stored in the global variable called __builtins__. Any code executed
with a non-standard global variable space may or may not have the
same set of builtins as normal Python code.
Unfortunately Zope does not expose all of the 'builtin' python
methods to DMTL expressions. Some obviously need to be cut out
(such as 'open') for security reasons, but the reasons why others
were dropped are less obvious.
If you really need any of the missing builtins back in you have a
couple of choices. Both require you have full access to your Zope
system.
If you want the function available throughout your Zope system
simply edit DocumentTemplate\DT_Util.py. Look for the list
beginning 'None', 'abs', 'chr' and simply add 'filter' into the list.
Alternatively if you dont want to patch Zope directly, create an
external python method that exposes filter.
> 5) In the dtml-tree tag, I change it to:
>
> <dtml-tree
> Technical
> leaves=dtcTemplate
> branches_expr="filter( lambda f: not
>f.hasProperty('blockTreeBranching', false), objectValues(['Folder']) )">
>
> which, all things equal, should DoTheRightThang.
Even if you make the filter function visible as described above, this
still won't quite work. For example the method 'objectValues' is not
in scope within the function. The way around this is to pass in an
extra parameter _vars. Try (untested):
branches_expr="filter( lambda f, _vars=_vars: not
f.hasProperty('blockTreeBranching', 0), objectValues(['Folder']) )">
and it might work.
Alternatively use something like a PythonMethod, or even a DTML
method and simply write the filter loop out in full using 'for' or 'dtml-
in'.
--
Duncan Booth [EMAIL PROTECTED]
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?
http://dales.rmplc.co.uk/Duncan
_______________________________________________
Zope maillist - [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
http://lists.zope.org/mailman/listinfo/zope-announce
http://lists.zope.org/mailman/listinfo/zope-dev )