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.getStartDate() と context.getEndDate() の代わりに、context.start() と context.end() を使用します。

于 2012-06-15T05:32:46.490 に答える