def test_provided(self): from Products.CMFCore.interfaces import IContentish from Products.CMFCore.interfaces import IIndexableObjectWrapper obj = DummyContent() w = self._makeOne({}, obj) self.failUnless(IContentish.providedBy(w)) self.failUnless(IIndexableObjectWrapper.providedBy(w))
def index_object(self, documentId, obj, treshold=None): """Index the object""" if not ITranslatable.isImplementedBy(obj): if IndexableObjectWrapper.isImplementedBy(obj): # Wrapper doesn't proxy __implements__ wrapped = getattr(obj, '_IndexableObjectWrapper__ob', None) # Older CMFPlone if wrapped is None: wrapped = getattr(obj, '_obj', None) if wrapped is None: return 0 obj = wrapped try: language = obj.Language if callable(language): language = language() except AttributeError: return 0 if ITranslatable.isImplementedBy(obj): cid = obj.getCanonical().UID() else: # Also index non-translatable content, otherwise # LinguaPlone only shows translatable content. # This assumes a catalog documentId will never # be equal to a UID. cid = documentId if documentId not in self._unindex: self._length.change(1) else: self._remove(self._unindex[documentId]) main, sub = splitLanguage(language) entry = IndexEntry(documentId, main, sub, cid) self._insert(entry) self._unindex[documentId] = entry self._sortindex[documentId] = str(entry) return 1