gpt4 book ai didi

plone - 允许匿名用户添加敏捷对象

转载 作者:行者123 更新时间:2023-12-04 19:06:28 28 4
gpt4 key购买 nike

我有一个基于 Dexterity 的容器,里面有一个基于 Dexterity 的项目。我需要让匿名用户在容器内添加这种类型的对象。

我已经创建了一个 rolemap.xml包含以下内容的文件:

<?xml version="1.0"?>
<rolemap>
<permissions>
<permission name="my.package: Add My Type" acquire="True">
<role name="Anonymous"/>
</permission>
</permissions>
</rolemap>

我在 configure.zcml 上声明了许可:

<permission
id="my.package.AddMyType"
title="my.package: Add My Type"
/>

最后我添加了一个像这样的自定义添加 View :

class MyAddView(dexterity.AddForm):
grok.name('MyType')
grok.require('my.package.AddMyType')

该表单已经向匿名用户显示,但是,当我按下保存按钮时,我被重定向到登录表单。

此外,登录用户也可以看到该表单,这应该不会发生。

我还需要做什么?

最佳答案

感谢指导我的 David Glick,我最终得到了一个非常简单的解决方案,涉及 add AddForm的方法类(class):

class MyAddView(dexterity.AddForm):
grok.name('MyType')
grok.require('my.package.AddMyType')

def update(self):
# check here if the user is anonymous and raise exception if not
super(AddView, self).update()

def add(self, object):
container = aq_inner(self.context)
addContentToContainer(container, object, checkConstraints=False)
self.immediate_view = container.absolute_url()

为了更好地理解它,您可能需要查看 original code in plone.dexterity .

您可能还注意到的一件重要事情是您可能需要修复您的工作流程权限以删除 业主 其中一些角色,或者您也可以以匿名用户可编辑的内容结束。

关于plone - 允许匿名用户添加敏捷对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23231104/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com