Permissions 通过知道Zope的id(反之亦然)来知道Zope权限标题的方法是什么?

Permissions 通过知道Zope的id(反之亦然)来知道Zope权限标题的方法是什么?,permissions,plone,zope,zope3,Permissions,Plone,Zope,Zope3,在Zope和Plone上,您可以注册如下权限: 当您知道权限id时,从Python获取权限标题的方法是什么 我的意思是: >>> something_magic.get('choosen.id.for.your.permission') 'Old Zope 2 permission, shown in ZMI' 权限通过其id注册为实用程序;因此,您可以使用以下方法通过其ID查找它们: 另一方面,从标题到id,您需要搜索所有实用程序: from zope.componen

在Zope和Plone上,您可以注册如下权限:


当您知道权限id时,从Python获取权限标题的方法是什么

我的意思是:

>>> something_magic.get('choosen.id.for.your.permission')
'Old Zope 2 permission, shown in ZMI'

权限通过其id注册为实用程序;因此,您可以使用以下方法通过其ID查找它们:

另一方面,从标题到id,您需要搜索所有实用程序:

from zope.component import getUtilitiesFor
from zope.security.interfaces import IPermission

searched_title = u'Old Zope 2 permission, shown in ZMI'
name = next((name for name, p in getUtilitiesFor(IPermission)
             if p.title == searched_title), None)

出于某种原因,它对我不起作用,但可能我使用了错误的id。谢谢!那么,从标题中获取id的更快方法是什么呢;您必须列出所有实用程序并进行搜索:
next((name代表name,如果p.title==searched\u title,则在getUtilitiesFor(IPermission)中为p),None)
将返回名称,如果没有任何此类权限,则返回
None
from zope.component import getUtilitiesFor
from zope.security.interfaces import IPermission

searched_title = u'Old Zope 2 permission, shown in ZMI'
name = next((name for name, p in getUtilitiesFor(IPermission)
             if p.title == searched_title), None)