【问题标题】:What is the way to know a Zope permission title by knowing its id (and vice-versa)?通过知道它的 id 来知道 Zope 权限标题的方法是什么(反之亦然)?
【发布时间】:2015-02-28 16:49:57
【问题描述】:

在 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'

【问题讨论】:

    标签: permissions plone zope zope3


    【解决方案1】:

    权限通过其 ID 注册为 zope.security.interfaces.IPermission 实用程序;因此,您可以使用 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
    

    反之,从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)
    

    【讨论】:

    • 由于某种原因它对我不起作用,但可能我使用了错误的 ID。谢谢!那么从标题中获取 id 的更快方法是什么?
    • 我认为没有;您必须列出所有实用程序并搜索:next((name for name, p in getUtilitiesFor(IPermission) if p.title == searched_title), None) 将返回名称或 None 如果没有任何此类权限。
    猜你喜欢
    • 1970-01-01
    • 2021-02-17
    • 2021-12-08
    • 1970-01-01
    • 2017-05-21
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多