def test23_RegistryBasesNotVersionedOrRestored(self): portal_repo = self.portal.portal_repository fol = self.portal.fol fol.setTitle("v1") # Make it a component registry with bases base = aq_base(self.portal.getSiteManager()) components = PersistentComponents() components.__bases__ = (base,) fol.setSiteManager(components) portal_repo.applyVersionControl(fol) broken_iface = broken.find_global( 'never_gonna_be_real', 'IMissing', Broken=ZODB.interfaces.IBroken, type=InterfaceClass) sys.modules[broken_iface.__module__] = module = imp.new_module( broken_iface.__module__) module.IMissing = broken_iface # add a broken registrsation but do a savepoint before # breaking the interfaces to simulate a broken registrion from # a previous commit base.registerUtility(component=None, provided=broken_iface) transaction.savepoint(optimistic=True) del sys.modules[broken_iface.__module__] fol.setTitle("v2") # If an attempt was made to pickle the parent registry's # broken registration we would see an error here portal_repo.save(fol) self.assertEqual(self.portal.fol.Title(), "v2") self.assertTrue( self.portal.fol.getSiteManager().__bases__[0] is base)
def makeSite(self): if IObjectManagerSite.providedBy(self.context): raise ValueError('This is already a site') enableSite(self.context, iface=IObjectManagerSite) #TODO in the future we'll have to walk up to other site # managers and put them in the bases components = PersistentComponents() components.__bases__ = (base,) self.context.setSiteManager(components)
def enable_local_site(obj): enableSite(obj, iface=IObjectManagerSite) for parent in aq_chain(obj)[1:]: if ISite.providedBy(parent): p_sm = parent.getSiteManager() bases = (p_sm,) + p_sm.__bases__ break else: bases = (base,) components = PersistentComponents() components.__bases__ = bases obj.setSiteManager(components)
def enable_local_site(obj): enableSite(obj, iface=IObjectManagerSite) for parent in aq_chain(obj)[1:]: if ISite.providedBy(parent): p_sm = parent.getSiteManager() bases = (p_sm, ) + p_sm.__bases__ break else: bases = (base, ) components = PersistentComponents() components.__bases__ = bases obj.setSiteManager(components)
def createComponentRegistry(context): enableSite(context, iface=IObjectManagerSite) components = PersistentComponents() components.__bases__ = (base,) context.setSiteManager(components)
def createComponentRegistry(context): enableSite(context, iface=IObjectManagerSite) components = PersistentComponents() components.__bases__ = (base, ) context.setSiteManager(components)