首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用config.py和__init__.py在browser/figre.zcml中为自定义权限创建的权限(使用paster)?

如何使用config.py和__init__.py在browser/figre.zcml中为自定义权限创建的权限(使用paster)?
EN

Stack Overflow用户
提问于 2011-07-20 14:16:46
回答 1查看 317关注 0票数 3

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

在我的config.py

代码语言:javascript
复制
ADD_PERMISSIONS = {
    # -*- extra stuff goes here -*-
    'MyContentType': 'mynamespace.mypackage: Add My Content Type'
}

在我的__init__.py

代码语言:javascript
复制
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)

...and in browser/configure.zcml

代码语言:javascript
复制
  <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中使用它们?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-20 15:48:40

实际上,您应该使用collective.autopermission并创建一个包含如下语句的permissions.zcml (并在您的configure.zcml中加载它,或者仅仅在configure.zcml本身中添加行):

代码语言:javascript
复制
  <permission
      id="mynamespace.mypackage.AddMyContentType"
      title="mynamespace.mypackage: Add My Content Type"
      />

您可以选择不同的id,但标题必须与您在config.py中指定的标题相同。

编辑:

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

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6763405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档