通过了解其ID(反之亦然)了解Zope权限标题的方法是什么?

keu*_*eul 2 permissions zope plone zope3

在Zope和Plone上,你可以注册这样的权限:

<permission
   id="choosen.id.for.your.permission"
   title="Old Zope 2 permission, shown in ZMI"
   />
Run Code Online (Sandbox Code Playgroud)

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

我的意思是:

>>> something_magic.get('choosen.id.for.your.permission')
'Old Zope 2 permission, shown in ZMI'
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

权限zope.security.interfaces.IPermission按其ID 注册为实用程序; 你可以通过使用zope.component.getUtility()以下方式查看它们的ID :

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

permission = getUtility(IPermission, name=u'choosen.id.for.your.permission')
print permission.title
Run Code Online (Sandbox Code Playgroud)

换句话说,从title到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)
Run Code Online (Sandbox Code Playgroud)