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

时间:2012-02-03 16:00:29

标签: python plone zope 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.

我假设有一些迁移需要运行才能在最初无序的文件夹上设置排序但我在plone.app.folder和plone.folder中找不到任何可用于此类情况的内容。 / p>

1 个答案:

答案 0 :(得分:4)

我编写了一个似乎可以解决问题的升级脚本:

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)