Как перенести неупорядоченную папку в упорядоченную в Plone? - PullRequest
2 голосов
/ 03 февраля 2012

У меня есть тип содержимого папки, производный от 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.

1 Ответ

4 голосов
/ 03 февраля 2012

Я написал скрипт обновления, который, кажется, решает проблему:

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)
...