Автоматически создавать новые объекты в папке Plone, имея только порядковые номера идентификаторов - PullRequest
1 голос
/ 21 июня 2011

У меня есть следующая структура:

/Plone/folder/year/month/day/id

Я хочу создать последний id последовательно в инструменте, используя invokeFactory. Я хочу иметь:

/Plone/folder/2011/06/21/1
/Plone/folder/2011/06/21/2
/Plone/folder/2011/06/21/3
/Plone/folder/2011/06/21/4

Вместо:

/Plone/folder/2011/06/21/id-1
/Plone/folder/2011/06/21/id-2
/Plone/folder/2011/06/21/id-3
/Plone/folder/2011/06/21/id-4

... это автоматически делается, когда я пытаюсь создать объект с тем же именем в папке, Plone обрабатывает это для меня, добавляя последовательный номер. Я хочу эффективный способ создания объектов, но только с использованием последовательного номера вместо имени с последовательным номером. Я могу сделать это, получив общее количество элементов в папке, но хотел бы знать, есть ли лучший способ.

Пример из реальной жизни: http://plone.org/products/collective.captcha/issues/4

1 Ответ

2 голосов
/ 22 июня 2011

Если вы создаете эти объекты вручную, вы можете сделать что-то вроде:

brains = context.getFolderContents({'sort_on' : 'id', 'sort_order' : "reverse"})
if len(brains) > 0:
  id = str(int(brains[0].id) + 1)
else:
  id = '1'

Затем вам нужно будет создать объект вручную с этим идентификатором.

Если вы хотите, чтобы это делалось автоматически для вас, когда пользователь создает контент, вы можете изучить создание правила контента, чтобы изменить идентификатор контента для вас. Вот пример, который может помочь: colle.contentrules.yearmonth

...