def dx_schedule_indexer(context): assignable = IBehaviorAssignable(context, None) if assignable is None or not assignable.supports(IFeedControl): return date = getattr(context, "feedSchedule", None) if date is None: assignable = IBehaviorAssignable(context, None) if assignable is not None: if assignable.supports(IDublinCore): return context.effective_date return DateTime( date.year, date.month, date.day )
def dx_feed_indexer(context): assignable = IBehaviorAssignable(context, None) if assignable is not None: if assignable.supports(IFeedControl): try: return tuple(context.feeds) except TypeError: return tuple()
def test_member_behaviors(self): behaviors = [INameFromFullName, IReferenceable, metadata.ICategorization, metadata.IPublication, metadata.IOwnership, IMembraneUser, IProvidePasswords] member = self._createType( self.layer['portal'], 'dexterity.membrane.member', 'les') assignable = IBehaviorAssignable(member) for b in behaviors: self.assertTrue(assignable.supports(b), "member type should support %s behavior" % b)
def test_member_behavior_blacklist(self): # Some behaviors should definitely NOT be provided. black_list = [metadata.IDublinCore, metadata.IBasic] # Note that we would want INameFromTitle in the black list as # well, but it cannot be, as it gets pulled in as base class # of INameFromFullName. member = self._createType(self.layer["portal"], "dexterity.membrane.organizationmember", "les") assignable = IBehaviorAssignable(member) for b in black_list: self.assertFalse(assignable.supports(b), "member type should NOT support %s behavior" % b)
def test_member_behaviors(self): behaviors = [INameFromFullName, IReferenceable, metadata.ICategorization, metadata.IPublication, metadata.IOwnership, IMembraneUser, IProvidePasswords] member = self._createType( self.layer['portal'], 'dexterity.membrane.organizationmember', 'les') assignable = IBehaviorAssignable(member) for b in behaviors: self.assertTrue(assignable.supports(b), "member type should support %s behavior" % b)
def test_member_behavior_blacklist(self): # Some behaviors should definitely NOT be provided. black_list = [metadata.IDublinCore, metadata.IBasic] # Note that we would want INameFromTitle in the black list as # well, but it cannot be, as it gets pulled in as base class # of INameFromFullName. member = self._createType(self.layer['portal'], 'dexterity.membrane.member', 'les') assignable = IBehaviorAssignable(member) for b in black_list: self.assertFalse(assignable.supports(b), "member type should NOT support %s behavior" % b)
def __call__(self, context): assignable = IBehaviorAssignable(context, None) if assignable is None: return None if not assignable.supports(self.behavior.interface): return None if self.behavior.factory is not None: adapted = self.behavior.factory(context) else: # When no factory is specified the object should provide the # behavior directly adapted = context return adapted
def test_has_behavior(self): """ Test behavior and assignable works nicely. """ self.loginAsPortalOwner() self.portal.invokeFactory("Document", "doc") doc = self.portal.doc # Check assignable works from plone.behavior.interfaces import IBehaviorAssignable assignable = IBehaviorAssignable(doc, None) self.assertTrue(assignable.supports(IMobileBehavior)) self.assertNotEqual(assignable, None) # Check behavior works self.assertTrue(IMobileContentish.providedBy(doc)) behavior = IMobileBehavior(doc) self.assertNotEquals(behavior, None)
def make_some_evil_site_content(self): """ Test behavior and assignable works nicely. """ self.loginAsPortalOwner() self.portal.invokeFactory("Document", "doc") doc = self.portal.doc doc.processForm() # Check assignable works from plone.behavior.interfaces import IBehaviorAssignable assignable = IBehaviorAssignable(doc, None) self.assertTrue(assignable.supports(IMultiChannelBehavior)) self.assertNotEqual(assignable, None) # Check behavior works self.assertTrue(IMobileContentish.providedBy(doc)) behavior = IMultiChannelBehavior(doc) behavior.contentMedias = ContentMediaOption.BOTH behavior.save()
def dx_category_indexer(context): assignable = IBehaviorAssignable(context, None) if assignable is not None: if assignable.supports(IFeedControl): return getattr(context, "feedCategory", None)