gpt4 book ai didi

plone - 如何在 browser/configure.zcml 中使用 config.py 和 __init__.py(使用 paster)创建的权限以获得自定义权限?

转载 作者:行者123 更新时间:2023-12-01 11:56:24 24 4
gpt4 key购买 nike

我正在使用 paster 创建我的内容类型和 View 。我正在使用 Plone 3.3。

在我的 config.py 中:

ADD_PERMISSIONS = {
# -*- extra stuff goes here -*-
'MyContentType': 'mynamespace.mypackage: Add My Content Type'
}

在我的 __init__.py 中:

for atype, constructor in zip(content_types, constructors):
utils.ContentInit('%s: %s' % (config.PROJECTNAME, atype.portal_type),
content_types=(atype, ),
permission=config.ADD_PERMISSIONS[atype.portal_type],
extra_constructors=(constructor,),
).initialize(context)

...在 browser/configure.zcml 中:

  <browser:page
for="*"
name="myview"
class=".myview.MyView"
template="myview.pt"
allowed_interface=".myview.IMyView"
permission="the permissions defined in ADD_PERMISSIONS: what is the name I can put here?"
/>

我知道我可以使用 colective.autopermission 创建自定义权限,但我已经使用 config.py 创建了它们,如何在我的 configure.zcml 中使用它们?

编辑:嗯,在 ZCML 中定义的浏览器 View 使用 Zope 3 权限 ID,但我的 config.py 使用 Zope 2 权限标题。我需要使用 collective.autopermission 来创建 zope 3 权限 ID,或者我可以使用另一种方法(比如只创建一个 permissions.zcml,具有 title 属性,使用相同的 titleADD_PERMISSIONS 字典中提供,因为 zope 2 样式的权限已经创建,所以我不需要 collective.autopermission)?

最佳答案

你确实应该使用 collective.autopermission 并创建一个包含如下语句的 permissions.zcml(并将其加载到你的 configure.zcml 中,或者只是在 configure.zcml 本身中添加行):

  <permission
id="mynamespace.mypackage.AddMyContentType"
title="mynamespace.mypackage: Add My Content Type"
/>

您可以选择不同的 id,但标题需要与您在 config.py 中提供的标题相同。

编辑:

请注意,在 Plone 4.0 或更高版本中使用的 Zope2 版本包含 collective.autopermission 补丁,因此您无需再使用该包;当然,您确实仍然需要 zcml 中的权限声明。

在 Plone 3 上你确实需要 collective.autopermission 包,你应该在你的 setup.py 中依赖它并添加 <include package="collective.autopermission" />在权限注册之前在您的 zcml 中(或使用 z3c.autoinclude,包含在 Plone 3.3 中,自动加载该 zcml)。

关于plone - 如何在 browser/configure.zcml 中使用 config.py 和 __init__.py(使用 paster)创建的权限以获得自定义权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763405/

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