from Acquisition import aq_base

from OFS.SimpleItem import Item

def manage_beforeDelete(self, item, container):
    if aq_base(item) is aq_base(self):
        self.__parent__ = None
    if not getattr(self, 'pending_move', 0):
        self.__parent__ = None

def manage_afterAdd(self, item, container):
    if aq_base(item) is aq_base(self):
        self.__parent__ = container
    
Item.manage_beforeDelete = manage_beforeDelete
Item.manage_afterAdd = manage_afterAdd


from OFS.ObjectManager import ObjectManager

def manage_afterAdd(self, item, container):
    if aq_base(item) is aq_base(self):
        self.__parent__ = container
    ObjectManager._manage_afterAdd(self, item, container)

def manage_beforeDelete(self, item, container):
    if aq_base(item) is aq_base(self):
        self.__parent__ = None
    if not getattr(aq_base(self), 'pending_move', 0):
        self.__parent__ = None
    ObjectManager._manage_beforeDelete(self, item, container)
    
ObjectManager._manage_beforeDelete = ObjectManager.manage_beforeDelete
ObjectManager.manage_beforeDelete = manage_beforeDelete

ObjectManager._manage_afterAdd = ObjectManager.manage_afterAdd
ObjectManager.manage_afterAdd = manage_afterAdd

    
from Products.CMFCore.CMFCatalogAware import CMFCatalogAware

def manage_afterAdd(self, item, container):
    if aq_base(item) is aq_base(self):
        self.__parent__ = container
    CMFCatalogAware._manage_afterAdd(self, item, container)

def manage_beforeDelete(self, item, container):
    if aq_base(item) is aq_base(self):
        self.__parent__ = None
    if not getattr(aq_base(self), 'pending_move', 0):
        self.__parent__ = None
    CMFCatalogAware._manage_beforeDelete(self, item, container)

CMFCatalogAware._manage_beforeDelete = CMFCatalogAware.manage_beforeDelete
CMFCatalogAware.manage_beforeDelete = manage_beforeDelete

CMFCatalogAware._manage_afterAdd = CMFCatalogAware.manage_afterAdd
CMFCatalogAware.manage_afterAdd = manage_afterAdd
