2

在 Zope 和 Plone 上,您可以像这样注册权限:

<permission
   id="choosen.id.for.your.permission"
   title="Old Zope 2 permission, shown in ZMI"
   />

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

我的意思是:

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

1 回答 1

5

权限zope.security.interfaces.IPermission通过其 id 注册为实用程序;因此,您可以使用以下方法通过它们的 id 来查找它们zope.component.getUtility()

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

permission = getUtility(IPermission, name=u'choosen.id.for.your.permission')
print permission.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)
于 2015-02-28T17:10:40.363 回答