1

我正在尝试根据此处的建议添加自定义目录索引:

我的代码如下所示(h/t: supton):

from plone.indexer.decorator import indexer
from Products.ATContentTypes.interfaces.event import IATEvent
from Products.ATContentTypes.utils import DT2dt

@indexer(IATEvent)
def event_days(context, **kw):
    start = DT2dt(context.getStartDate())
    end = DT2dt(context.getEndDate())
    delta = end - start
    return delta.days

在以下 ZCML 注册:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:five="http://namespaces.zope.org/five"
    xmlns:genericsetup="http://namespaces.zope.org/genericsetup">

    <five:registerPackage package="." initialize=".initialize" />

    <genericsetup:registerProfile
        description="event_days_indexer"
        directory="profiles/default"
        name="default"
        provides="Products.GenericSetup.interfaces.EXTENSION"
        title="event_days_indexer"
    />

    <adapter name="event_days" factory=".indexers.event_days" />

</configure>

一切似乎都加载得很好,但是当我创建一个测试事件并重新索引目录时,索引仍然是空的。我错过了什么?

4

1 回答 1

2

如果索引器遇到 AttributeError,则不会考虑将对象作为索引。

在这种情况下发生这种情况是因为 ATContentTypes 为 startDate 和 endDate 字段指定了自定义访问器。使用 context.start() 和 context.end() 代替 context.getStartDate() 和 context.getEndDate()

于 2012-06-15T05:32:46.490 回答