Python Plone:在内容提交期间查询特定文件夹中的原型内容项/对象

Python Plone:在内容提交期间查询特定文件夹中的原型内容项/对象,python,plone,archetypes,Python,Plone,Archetypes,是否可以在每次内容提交期间访问或导航同一文件夹下保存的内容项,以便必须验证提交的每个内容,以避免提交已经存在的内容?我有应用程序内容类型,成员可以提交他们的应用程序,但每个成员不应接受超过一个应用程序。如果是,请帮助我。提前感谢。备选方案1:使用PloneFormGen,制作一个带有按钮和动作适配器的表单。该按钮称为应用。操作适配器有一个python脚本,用于检查用户是否已应用,如果已应用,则重定向到现有项的编辑视图,如果未应用,则调用Applications文件夹上的invokeFactory

是否可以在每次内容提交期间访问或导航同一文件夹下保存的内容项,以便必须验证提交的每个内容,以避免提交已经存在的内容?我有应用程序内容类型,成员可以提交他们的应用程序,但每个成员不应接受超过一个应用程序。如果是,请帮助我。提前感谢。

备选方案1:使用PloneFormGen,制作一个带有按钮和动作适配器的表单。该按钮称为应用。操作适配器有一个python脚本,用于检查用户是否已应用,如果已应用,则重定向到现有项的编辑视图,如果未应用,则调用Applications文件夹上的invokeFactory。您可能想隐藏“添加内容”菜单,可能只是使用该位置的CSS


备选方案2:创建一个事件处理程序,用于拦截文件夹上的创建内容。也可以使用内容规则。尝试一个内容规则并查看它何时生效,否则您可以创建一个可以在正确时间拦截的事件处理程序。我们可以从监听zope.event开始,我相信它是被调用的,或者类似的,它是所有事件的基类,并记录添加内容时生成的事件。选择一个看似正确的事件,并添加python代码,重定向到现有项目的编辑视图,或者如果用户尚未应用,则只允许内容创建过程继续进行。

我过去曾经这样做过,当使用invokeFactory添加内容对象时,您能否提供一个示例,说明如何添加对象,或者是如何使用标准的plone add content菜单添加对象?管理员将创建包含所有应用程序的文件夹,然后it成员可以使用标准的plone add content菜单添加或提交应用程序。非常感谢,我将深入研究这些方法。