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))
Example #2
0
    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())
Example #4
0
    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())
Example #5
0
 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)
Example #7
0
 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)
Example #8
0
    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
Example #9
0
    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
Example #10
0
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
Example #11
0
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
Example #12
0
    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)
Example #13
0
    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)
Example #14
0
 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)]
Example #15
0
 def __eq__(self, other):
     if implementedOrProvidedBy(IBrainAggregate, other):
         return self.brain.UID == other.brain.UID and \
                self.sources == other.sources
Example #16
0
 def __eq__(self, other):
     if implementedOrProvidedBy(IBrainAggregate, other):
         return self.brain.UID == other.brain.UID and \
                self.sources == other.sources