首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Zope2添加自定义plone.indexer目录索引?

如何使用Zope2添加自定义plone.indexer目录索引?
EN

Stack Overflow用户
提问于 2012-06-15 01:23:25
回答 1查看 430关注 0票数 1

我试图根据这里的建议添加一个自定义目录索引:

  • 索引/indexing.html#定制-索引-方法

我的代码看起来如下(h/t: supton):

代码语言:javascript
复制
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注册:

代码语言:javascript
复制
<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>

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-15 05:32:46

如果索引器命中AttributeError,则不考虑将对象作为索引。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11043521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档