【问题标题】:Plone: catalog_object method won't add my (AT) objectsPlone:catalog_object 方法不会添加我的(AT)对象
【发布时间】:2015-10-20 18:46:17
【问题描述】:

我有一个 transmogrifier 管道可以将对象插入我的 Zope 数据库(从目录结构中导入 zexp 文件)。这行得通 - 对象被创建;但我没有将它们添加到 portal_catalog。

plone.app.transmogrifier.reindexobject 的启发,我添加了一个部分以明确将对象添加到目录中:我为每个项目调用portal_catalog.catalog_object(obj)

对象存在,getPhysicalPath 产生正确的值,但没有添加对象。没有任何错误消息或异常。

我试图指定索引列表(idxs 参数),但这并没有改变任何东西。如果不指定,无论如何都应该填写所有索引,对吧?

因为它看起来像transaction 问题(没有错误,但目录中也没有存储任何内容),我尝试了事务代码(开始、保存点、提交以及异常中止的情况下),但它没有没有帮助。当我在 catalog_object 调用 (portal_catalog(path='/Plonesite/full/path/to/object')) 之后立即调用目录时,什么都没有发生,并且返回一个空列表。

目录确实包含对象;甚至我的自定义数据类型的对象(基于 AT)。甚至我导入的 Folder 对象都没有被索引。

如果没有目录中的对象,我的导入将毫无用处。我能做什么?

谢谢!

编辑:感谢任何有关如何在目录中获取我的对象树的提示!即使它不能集成到我的流程中。我需要编目的内容...

我的自定义内容类型包含在Plone Catalog Tool 页面选择字段中,但我不知道这是否足够。

编辑 2: 不知何故,我的对象已经被编目了 - the unrestrictedSearchResults method 展示了它们!但是,完全使用这种方法并不是理想的解决方案;所以我需要以某种方式“取消限制”条目。

【问题讨论】:

  • 不是您原始问题的解决方案,但您仍然可以前往 ZMI 并单击目录工具中的“清理并重建”按钮。它将索引您的所有对象。
  • +1 对 keul 所说的话。我对此的记忆很模糊,但我似乎记得 plone.app.transmogrifier.reindexobject 并没有像我预期的那样对我有用。我通常不得不在变形器运行后手动重建目录。我也很想知道是否还有其他方法。
  • 我知道Clean and rebuild 操作;可悲的是,它没有帮助(还)。可能我的对象仍然存在问题,但我怀疑是原因的字段没有解决问题......

标签: plone archetypes plone-4.x


【解决方案1】:

原来我有一个monkey:patch (xmlns:monkey="http://namespaces.plone.org/monkey") 用于Products.CMFPlone.CatalogTool.CatalogTool.searchResults 方法;这会过滤我的附加字段 subportal 的目录,除非给它一个特殊值 - 即使在管理视图中也是如此......不幸的是,我无法在该视图中指定这个特殊值。

因此,解决方案是清除所有错误值(对于其他 Zope 树中不存在的 subportals),以使默认值生效。

很具体到我的设置,恐怕......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多