2012-06-15 26 views
1

我试图根据该建议在此处添加自定义目录索引:如何使用plone.indexer添加自定义Zope2目录索引?

My code看起来像这样(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 

<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> 
:用以下ZCML注册

一切似乎加载很好,但是当我创建了一个测试活动,并重新索引目录,索引保持为空。我错过了什么?

+0

埃姆,有没有在日志什么? – Yuri

+0

@Yuri:如果存在AttributeError,则不会有。 –

+1

@aclark:不要告诉我你不知道如何在该索引器中放置一个'pdb.set_trace()'.. :-P –

回答

2

的对象将不被考虑的索引如果索引命中一个AttributeError。

在这种情况下,出现这种情况是因为ATContentTypes指定起始日期和结束日期字段的自定义访问器。相反context.getStartDate()和context.getEndDate(),请使用context.start()和context.end()

+0

谢谢!我不会问为什么没有回溯... – aclark

+0

@aclark:索引器总是吞下AttributeErrors(然后索引'Missing.MV'又名“缺失值”)。 –

+0

@MartijnPieters啊,谢谢。有什么地方可以找到缺失值? (主场迎战看到零个结果portal_catalog) – aclark

相关问题