在Plone文件夹中自动创建新对象,仅为ID的序列号

时间:2011-06-21 15:54:51

标签: plone

我有以下结构:

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

我想使用invokeFactory在工具中按顺序创建最后一个id。我希望:

/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会为我添加一个序列号。我想要一种有效的方法来创建对象,但只使用序列号而不是带序号的名称。我可以这样做,在文件夹中获取总数os项,但想知道是否有更好的方法。

现实生活中的例子:http://plone.org/products/collective.captcha/issues/4

1 个答案:

答案 0 :(得分:2)

如果您手动创建这些对象,可以执行以下操作:

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

然后,您必须使用该ID手动创建对象。

如果您希望在用户创建内容时自动完成此操作,您可能需要考虑创建内容规则以更改内容的ID。可能有用的示例是collective.contentrules.yearmonth