2013-01-18 30 views
1

你知道,你开始创建一个名为something.good分布,它定义了一个permissions.zcml的东西,如:如何干净地删除Plone自定义权限?

<configure xmlns="http://namespaces.zope.org/zope"> 

    <permission 
    id="something.good.reset" 
    title="something.good: reset entries" 
    /> 

</configure> 

不过,一旦分布安装在服务器上,你就会意识到,权限并不好足够并且必须被完全重构为something.else

plone_quickinstaller上卸载something.good不会删除权限。去ZMI内的任何安全标签,你仍然可以看到它。

我环顾四周寻找文档,浏览代码AccessControlProducts.GenericSetup但找不到任何东西。

有关如何删除它的任何想法?

回答

1

好的,所以Plone很容易,别介意别人会告诉你什么。

所以,你(实际上我)想要删除权限定义? 只要做到这一点!

这样的事情的清单来检查正常删除的权限是:

  • permissions.zcml
    • 删除的权限,如果没有权限离开删除任何引用该文件(也许你的configure.zcml
  • 去除profiles/default/rolemap.xml
  • 的权限的所有引用
  • 扫描所有configure.zcml或Python文件(如果使用神交样的权限)来引用该权限

就是这样!

重新启动实例后,该权限将不再显示在ZMI的安全选项卡上。

似乎权限是在启动时即时创建的吗?对我来说似乎如此。尽管证明我错了!

+1

你是对的;请注意*权限的赋值*存储在ZODB中(持久化)。再次向Zope添加权限,神奇的权限分配会重新出现。 –

+0

感谢马丁的笔记。任何代码指针如何也清理这个? – gforcada

+0

你的意思是删除持续的assigment信息? –