Re: Bugtracker for z3c.relationfield and reasons for objects loosing their parent pointers

Patrick Gerken <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <CAFefbnHdcJNa6NfDGAD8WTFkAgYVDNcRzVd4pD2Tbm0R_NC1gw@mail.gmail.com>
On Tue, Mar 27, 2012 at 16:35, Hanno Schlichting <[email protected]> wrote:
> On Tue, Mar 27, 2012 at 3:50 PM, Patrick Gerken <[email protected]> wrote:
>> Hmm, since I didn't understand what magic happens with __parent__ pointers,
>> I tried the following in pdb:
>> unwrapped = aq_base(a)
>> unwrapped.__parent__ = aq_base(a.__parent__)
>>
>> So I stored a not acquisition wrapped object onto the __parent__ attr
>> of another unwrapped object.
>> But then the result, unwrapped.__parent__ was acquisition wrapped again!
>
> Yep. That's one thing we changed in Acquisition and ExtensionClass
> 4.0a1: Prevent wrappers to be created while accessing __parent__ on
> types derived from Explicit or Implicit base classes.
>
> Usually accessing any attribute on a type derived from
> Acquisition.Explicit or Implicit will force wrapping to take place,
> unless there's already a wrapper present. Maybe you remember the whole
> weird story with browser views in Zope 2 and the need for using
> "context = aq_inner(self.context)". That was the same problem.
> Accessing the context attribute of the view (self), created a wrapper
> equivalent to: "context = context.__of__(self)", as the view itself
> wasn't wrapped in anything. For views we got rid of the problem by
> removing the Acquisition.Implicit base class.

I do remember that. Never understood why.

Thanks for the detailed explanation of all this.

Best regards,

         Patrick
_______________________________________________
Zope-Dev maillist  -  [email protected]
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.