示例#1
0
文件: utils.py 项目: dtgit/dtedu
def lookupTranslationId(obj, page, ids):
    implemented = ITranslatable.isImplementedBy(obj)
    if not implemented or implemented and not obj.isTranslation():
        pageobj = getattr(obj, page, None)
        if (pageobj is not None and
            ITranslatable.isImplementedBy(pageobj)):
            translation = pageobj.getTranslation()
            if (translation is not None and
                ids.has_key(translation.getId())):
                page = translation.getId()
    return page
示例#2
0
 def isTranslatable(self, obj):
     """Checks if ITranslatable interface is implemented."""
     try:
         if obj.checkCreationFlag():
             return False
     except NameError:
         pass
     return ITranslatable.isProvidedBy(obj)
示例#3
0
    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
示例#4
0
 def test_implementsTranslateable(self):
     # lingua plone is adding the ITranslatable interface to all types
     if not HAS_LINGUA_PLONE:
         return
     self.failUnless(ITranslatable.isImplementedBy(self._ATCT))
     self.failUnless(verifyObject(ITranslatable, self._ATCT))