如何知道结果大脑是基于Archetypes还是Dexterity的对象?

时间:2013-01-03 13:32:58

标签: plone dexterity archetypes

有没有办法只使用目录搜索产生的大脑知道对象是基于原型还是基于敏捷?

2 个答案:

答案 0 :(得分:4)

敏捷项通常将其meta_type设置为'Dexterity Item'或'Dexterity Container'。这在目录元数据中可用。

答案 1 :(得分:3)

我认为此信息不会被编入索引,但可以通过获取FTI轻松地进行检索。处理大型结果集时可以缓存查找。

我认为这样的事情应该有效:

from plone.dexterity.interfaces import IDexterityFTI
from zope.component.hooks import getSite
from Products.CMFCore.utils import getToolByName

def is_dexterity(brain):
    ttool = getToolByName(getSite(), 'portal_types')
    fti = ttol.get(brain.portal_type)
    return IDexterityFTI.providedBy(fti)