如何将无序文件夹迁移到 Plone 中的有序文件夹

van*_*eem 2 python zope plone archetypes

我有一个源自 ATBTreeFolder 的文件夹内容类型,它在 plone 4(实际上在 Products.Archetypes 中)将排序设置为“无序”。

如果我继续设置要排序的顺序,这只是一个空字符串,则文件夹会混淆并且不会向我显示文件夹的内容。事实上,我会得到这样的错误:

  File "buildout-cache/eggs/plone.folder-1.0.1-py2.6.egg/plone/folder/default.py", line 130, in getObjectPosition
    raise ValueError('No object with id "%s" exists.' % id)
ValueError: No object with id "someid" exists.
Run Code Online (Sandbox Code Playgroud)

我假设需要运行一些迁移才能在最初无序的文件夹上设置排序,但我在 plone.app.folder 和 plone.folder 中找不到任何可用于这种情况的东西。

van*_*eem 5

我写了一个升级脚本,似乎解决了这个问题:

catalog = getToolByName(context, 'portal_catalog')
for brain in catalog(portal_type='MyType'):
    obj = brain.getObject()
    if obj._ordering == 'unordered':
        obj.setOrdering(u'')
    order = obj.getOrdering()
    for id in obj._tree:
        if id not in order._order():
            order.notifyAdded(id)
Run Code Online (Sandbox Code Playgroud)