[Zope] manage_pasteObjects in manage_afterAdd raises
AttributeError for getPhysicalRoot
Dieter Maurer
dieter@handshake.de
Wed, 25 Sep 2002 21:02:09 +0200
=?iso-8859-1?Q?Gr=E9goire?= Weber writes:
> AttributeError / getPhysicalRoot has gone changing
>
> index_obj = getattr(container.aq_base, 'index_html', None)
>
> to
>
> if hasattr(container.aq_base, 'index_html'):
> index_obj = getattr(container, 'index_html')
> else:
> index_obj = None
>
> I thought they were equivalent -- they're not !!!
>
> Can somebody confirm that (inclusive reasons)?
I can.
"container.aq_base" is "container" without any acquisition context.
"getattr(container.aq_base,attr)" is "attr" in the context
of "container.aq_base". Further acquisition context is missing.
"getattr(container,attr)" is "attr" in the context of "container".
It has full acquisition context.
If it is not clear, read the "Acquisition" section in
<http://www.dieter.handshake.de/pyprojects/zope/book/chap3.html>
and draw some acquisition trees.
Dieter