def test_provided(self): from Products.CMFCore.interfaces import IContentish from plone.indexer.interfaces import IIndexableObjectWrapper from Products.CMFCore.tests.base.dummy import DummyContent obj = DummyContent() w = IndexableObjectWrapper(obj, self.portal.portal_catalog) self.assertTrue(IIndexableObjectWrapper.providedBy(w)) self.assertTrue(IContentish.providedBy(w))
def test_provided(self): from Products.CMFCore.interfaces import IContentish from plone.indexer.interfaces import IIndexableObjectWrapper from Products.CMFCore.tests.base.dummy import DummyContent obj = DummyContent() w = IndexableObjectWrapper(obj, self.portal.portal_catalog) self.assertTrue(IIndexableObjectWrapper.providedBy(w)) self.assertTrue(IContentish.providedBy(w))
def index_object(self, documentId, obj, treshold=None): """Index the object""" if not ITranslatable.providedBy(obj): if IIndexableObjectWrapper.providedBy(obj): # wrapped object in `plone.indexer` wrapped = getattr(obj, '_IndexableObjectWrapper__object', None) # XXX: the rest can probably go now... # Wrapper doesn't proxy __implements__ if wrapped is None: 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.providedBy(obj): canonical = obj.getCanonical() # Gracefully deal with broken references if canonical is None: return 0 cid = canonical.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