def testMakeVocabulary(self): from Products.Archetypes.interfaces.base import IBaseFolder # filter self.ic.setAllowedTargetInterfaces([]) # allow any brains = [brain.makeBrainAggregate(self.portal, self.brains[1].UID)] brains2 = self.ic.makeVocabulary(self.brains[0], brains) self.assertEquals(len(brains), len(brains2)) self.ic.setAllowedTargetInterfaces(['IBaseFolder']) brains2 = self.ic.makeVocabulary(self.brains[0], brains) self.assertEquals([b.UID for b in brains2], [self.brains[1].UID]) # make list brains = self.ic.makeVocabulary(self.brains[0], None) for obj in [b.getObject() for b in brains]: self.assert_(implementedOrProvidedBy(IBaseFolder, obj)) # disallowed source interface self.ic.setAllowedSourceInterfaces(['IFooBar']) self.assertEquals( self.ic.makeVocabulary(self.brains[0], None), []) # the first of the two allowed source interfaces is what # self.brains[0] implements self.ic.setAllowedSourceInterfaces(['IReferenceable', 'IBaseFolder']) brains = self.ic.makeVocabulary(self.brains[0], None) for obj in [b.getObject() for b in brains]: self.assert_(implementedOrProvidedBy(IBaseFolder, obj))
def testMakeVocabulary(self): from Products.Archetypes.interfaces.base import IBaseFolder # filter self.ic.setAllowedTargetInterfaces([]) # allow any brains = [brain.makeBrainAggregate(self.portal, self.brains[1].UID)] brains2 = self.ic.makeVocabulary(self.brains[0], brains) self.assertEquals(len(brains), len(brains2)) self.ic.setAllowedTargetInterfaces(['IBaseFolder']) brains2 = self.ic.makeVocabulary(self.brains[0], brains) self.assertEquals([b.UID for b in brains2], [self.brains[1].UID]) # make list brains = self.ic.makeVocabulary(self.brains[0], None) for obj in [b.getObject() for b in brains]: self.assert_(implementedOrProvidedBy(IBaseFolder, obj)) # disallowed source interface self.ic.setAllowedSourceInterfaces(['IFooBar']) self.assertEquals(self.ic.makeVocabulary(self.brains[0], None), []) # the first of the two allowed source interfaces is what # self.brains[0] implements self.ic.setAllowedSourceInterfaces(['IReferenceable', 'IBaseFolder']) brains = self.ic.makeVocabulary(self.brains[0], None) for obj in [b.getObject() for b in brains]: self.assert_(implementedOrProvidedBy(IBaseFolder, obj))
def testInverseWithSharedObject(self): sUID, tUID = self.brains[0].UID, self.brains[1].UID triples = (sUID, tUID, self.ruleset1.getId()), processor.process(self.portal, connect=triples) # Get both reference objects created r1 = self.reflookup(sUID, tUID, self.ruleset1.getId()) r2 = self.reflookup(tUID, sUID, self.ruleset2.getId()) # Make sure both are of type IContentReference self.assert_(implementedOrProvidedBy(contentreference.IContentReference, r1)) self.assert_(implementedOrProvidedBy(contentreference.IContentReference, r2)) self.assertEquals(r1.getContentObject(), r2.getContentObject())
def testInverseWithSharedObject(self): sUID, tUID = self.brains[0].UID, self.brains[1].UID triples = (sUID, tUID, self.ruleset1.getId()), processor.process(self.portal, connect=triples) # Get both reference objects created r1 = self.reflookup(sUID, tUID, self.ruleset1.getId()) r2 = self.reflookup(tUID, sUID, self.ruleset2.getId()) # Make sure both are of type IContentReference self.assert_( implementedOrProvidedBy(contentreference.IContentReference, r1)) self.assert_( implementedOrProvidedBy(contentreference.IContentReference, r2)) self.assertEquals(r1.getContentObject(), r2.getContentObject())
def getComponents(self, interface): """Return a list of objects in self that implement the given interface.""" return [ obj for obj in self.objectValues() if implementedOrProvidedBy(interface, obj) ]
def testAllowedContentTypes(self): types = self.ruleset.allowedContentTypes() # We don't want to make assumptions about how many components are # in 'components/' and registered. We just assert that there *are* # components that we may add. self.assert_(len(types) > 0) for ti in types: self.assert_(implementedOrProvidedBy(icmfcore.ITypeInformation, ti), "%s not a type information." % ti)
def testAllowedContentTypes(self): types = self.ruleset.allowedContentTypes() # We don't want to make assumptions about how many components are # in 'components/' and registered. We just assert that there *are* # components that we may add. self.assert_(len(types) > 0) for ti in types: self.assert_( implementedOrProvidedBy(icmfcore.ITypeInformation, ti), "%s not a type information." % ti)
def invokeFactory(self, type_name, id, RESPONSE = None, *args, **kwargs): library = getToolByName(self, RELATIONS_LIBRARY) super_invokeFactory = utils.AllowedTypesByIface.invokeFactory v = super_invokeFactory(self, type_name, id, RESPONSE, *args, **kwargs) obj = getattr(self, v) if implementedOrProvidedBy(interfaces.IRuleset, obj): library.addReference(obj, RELATIONSHIP_LIBRARY) return v
def invokeFactory(self, type_name, id, RESPONSE=None, *args, **kwargs): library = getToolByName(self, RELATIONS_LIBRARY) super_invokeFactory = utils.AllowedTypesByIface.invokeFactory v = super_invokeFactory(self, type_name, id, RESPONSE, *args, **kwargs) obj = getattr(self, v) if implementedOrProvidedBy(interfaces.IRuleset, obj): library.addReference(obj, RELATIONSHIP_LIBRARY) return v
def makeBrainAggregate(context, obj): """Returns a brain aggregate that corresponds to obj. obj may be either a UID string, a brain of uid_catalog or an aggregated brain.""" if implementedOrProvidedBy(IBrainAggregate, obj): return obj elif isinstance(obj, type('')): # assume a UID return makeBrainAggrFromUID(context, obj) elif shasattr(obj, 'getPath'): # assume uid_catalog brain return makeBrainAggrFromBrain(context, obj) else: raise ValueError, "Object %r must be either UID or brain." % obj
def _setObject(self, id, obj, roles=None, user=None, set_owner=1, suppress_events=True): library = getToolByName(self, RELATIONS_LIBRARY) super_setObject = OrderedBaseFolder._setObject super_setObject(self, id, obj, roles, user, set_owner) if implementedOrProvidedBy(interfaces.IRuleset, obj): ruleset = obj ref_ctl = getToolByName(self, REFERENCE_CATALOG) brains = ref_ctl(sourceUID=library.UID(), targetUID=ruleset.UID(), relationship=RELATIONSHIP_LIBRARY) if len(brains) != 0: # We assume a rename ruleset._afterRename(self) else: # Assume a copy: we need to register the ruleset library.addReference(ruleset, RELATIONSHIP_LIBRARY)
def getComponents(self, interface): """Return a list of objects in self that implement the given interface.""" return [obj for obj in self.objectValues() if implementedOrProvidedBy(interface,obj)]
def __eq__(self, other): if implementedOrProvidedBy(IBrainAggregate, other): return self.brain.UID == other.brain.UID and \ self.sources == other.sources