我使用貼圖來創建我的內容類型和視圖。我正在使用Plone 3.3。如何在browser/configure.zcml中使用config.py和__init__.py(使用paster)創建的權限以獲得自定義權限?
在我config.py
:
ADD_PERMISSIONS = {
# -*- extra stuff goes here -*-
'MyContentType': 'mynamespace.mypackage: Add My Content Type'
}
在我__init__.py
:
for atype, constructor in zip(content_types, constructors):
utils.ContentInit('%s: %s' % (config.PROJECTNAME, atype.portal_type),
content_types=(atype,),
permission=config.ADD_PERMISSIONS[atype.portal_type],
extra_constructors=(constructor,),
).initialize(context)
...在browser/configure.zcml
:
<browser:page
for="*"
name="myview"
class=".myview.MyView"
template="myview.pt"
allowed_interface=".myview.IMyView"
permission="the permissions defined in ADD_PERMISSIONS: what is the name I can put here?"
/>
我知道我可以創建使用colective.autopermission自定義權限,但是II已經創建了它們config.py,我如何在configure.zcml中使用它們?
編輯:嗡嗡聲,ZCML中定義的瀏覽器視圖使用Zope 3權限ID,但是我的config.py使用Zope 2權限標題。我需要使用collective.autopermission來創建zope 3權限ID,或者我可以使用另一種方法(比如創建一個permissions.zcml,title
屬性,使用ADD_PERMISSIONS
字典中提供的相同title
,因爲zope 2樣式中的權限已經創建,所以我不需要collective.autopermission)?
但是,我應該刪除config.py部分?或者我可以保留它?我的理解是:使用autopermission來避免在config.py和__init__.py中使用該方法。但我的疑問是,如果我使用config.py方法來讀取數據,我應該停止使用它並且僅使用自動許可,或者我可以使用permission.zcml(並且在title屬性中,我使用config.py中的那個) ,沒有自動許可? –
你仍然需要'__init __。py',所以你仍然需要它在config.py中。 – maurits
請注意,您可能只想用'zope2.View'權限來保護您的視圖,或者在標題爲'查看我的內容類型'的zcml中創建特定權限。 – maurits