zope.principalannotation

軟件截圖:
zope.principalannotation
軟件詳細信息:
版本: 4.0.0 Alpha 2
上傳日期: 14 Apr 15
許可: 免費
人氣: 0

Rating: 5.0/5 (Total Votes: 1)

zope.principalannotation是實現註釋zope.security校長Python模塊 要清楚,這裡主要是提供zope.security.interfaces.IPrincipal接口和註解對象提供的Zope對象。 annotation.interfaces.IAnnotations。
問題在於,主體是在為每一個安全參與(請求或東西)動態創建動態的,非持久對象,所以共同註解的技術,如AttributeAnnotations不能適用於它們。
該軟件包提供了主要註解的持久存儲,存儲由主ID標註,以及從的IPrincipal到IAnnotations適配器。
PrincipalAnnotationUtility
這個包的核心是存儲註解為校長,並允許輕鬆地獲得他們的PrincipalAnnotationUtility類。
它提供了IPrincipalAnnotationUtility接口:
>>>從zope.principalannotation.interfaces進口IPrincipalAnnotationUtility
>>>從zope.principalannotation.utility進口PrincipalAnnotationUtility
>>>從zope.interface.verify進口verifyObject
>>> UTIL = PrincipalAnnotationUtility()
>>> verifyObject(IPrincipalAnnotationUtility,UTIL)

它提供了三種方法:getAnnotations,getAnnotationsById和hasAnnotations。讓我們創建一個測試本金,並檢查了這些方法:
>>>從zope.security.testing進口校長
>>> nadako =本金('nadako“)
>>> nadako.id
“nadako”
我們可以檢查我們的主要有任何註解。當然,目前沒有任何:
>>> util.hasAnnotations(nadako)

我們可以使用的主要對象本身IAnnotations對象:
>>> util.getAnnotations(nadako)

或者採用主ID:
>>> util.getAnnotationsById(nadako.id)

讓我們的IAnnotations反對我們的本金和它玩:
>>> annots = util.getAnnotations(nadako)
>>>從zope.interface.verify進口verifyObject
>>>從zope.annotation.interfaces進口IAnnotations
>>> verifyObject(IAnnotations,annots)

讓我們來檢查IAnnotation合同:
>>>布爾(annots)

>>> annots ['not.here']
回溯(最近通話最後一個):
...
KeyError異常:“not.here”
>>> annots.get('not.here')是無

>>> annots.get('not.here',42)
42
請注意,該IAnnotations對象被存儲在只有當我們設置一個關鍵點的實用程序。這是一個簡單的優化,讓我們不要存儲在所有我們要做的就是簡單地檢查標註presense任何數據。該hasAnnotations方法將存儲在一個註解鍵後返回True:
>>> util.hasAnnotations(nadako)

>>> annots ['its.here'] ='一些信息“
>>> util.hasAnnotations(nadako)

我們也可以刪除現有關鍵:
>>>德爾annots ['its.here']
但是,我們不能刪除的(沒有更多)existant的關鍵:
>>>德爾annots ['its.here']
回溯(最近通話最後一個):
...
KeyError異常:“its.here”
多標註公用事業
試想一下,你的應用有其組件註冊表根站點對象(即站點管理器)和對象都有其自己的組件註冊表中的一個子站點對象,而該組件註冊表有根的組件註冊為基地。
在這種情況下,我們希望IAnnotations反對可檢索來自更高級別的實用程序的註釋。
讓我們登記在公用事業根網站並創建一個子網站有自己的IPrincipalAnnotationUtility:
>>>根['util的'] = UTIL
>>> rootsm = root.getSiteManager()
>>> rootsm.registerUtility(UTIL,IPrincipalAnnotationUtility)
>>>從zope.site.folder導入文件夾
>>>從zope.site.site進口LocalSiteManager
>>>子網站=文件夾()
>>>根['子網站'] =子網站
>>> subsm = LocalSiteManager(子網站)
>>> subsm .__ bases__ =(rootsm,)
>>> subsite.setSiteManager(subsm)
>>> util2 = PrincipalAnnotationUtility()
>>>子網站['util2'] = util2
>>> subsm.registerUtility(util2,IPrincipalAnnotationUtility)
現在,讓我們創建的IAnnotations的關鍵,由root工具提供:
>>> annots = util.getAnnotations(nadako)
>>> annots ['root.number'] = 42
子網站程序應該得到註解成功:
>>> annots2 = util2.getAnnotations(nadako)
>>>布爾(annots2)

>>> annots2 ['root.number']
42
如果我們有兩個在更高級別的註解和更低級別的那些鍵,低級將具有優先級,但是更高級的也不會被刪除或重寫:
>>> annots ['another.number'] = 1
>>> annots2 ['another.number'] = 42
>>> annots ['another.number']
1
>>> annots2 ['another.number']
42
如果我們將刪除較低級別的密鑰,它也不會從較高級別輔助刪除:
>>>德爾annots2 ['another.number']
>>> annots ['another.number']
1
>>> annots2 ['another.number']
1
的IPrincipal - > IAnnotations適配器
當然,最不錯的功能是,我們可以簡單地調整我們的主要目的在於IAnnotations並獲得使用記錄在zope.annotation包裝標準方法的註釋。
  >>> annots = IAnnotations(nadako)
  >>> annots
 
  >>> annots ['root.number']
  42
默認情況下,IAnnotation適配器使用當前網站的實用工具:
>>> IAnnotations(nadako)是util.getAnnotations(nadako)

>>>從zope.site.hooks進口setSite
>>> setSite(子網站)
>>> IAnnotations(nadako)是util2.getAnnotations(nadako)

Howerver,我們可以使用二進制多適配器IAnnotations指定從中獲取註釋工具的一些上下文對象:
>>>從zope.component進口getMultiAdapter
>>> annots = getMultiAdapter((nadako,根),IAnnotations)
>>> annots是util.getAnnotations(nadako)

>>> annots = getMultiAdapter((nadako,子網站),IAnnotations)
>>> annots是util2.getAnnotations(nadako)
真正的

什麼在此版本中是新的

  • 在修正特羅韋分類

什麼是3.6.1版本,新的

  • 在固定嵌套本地站點管理器安裝測試失敗。

  • 在zope.container
  • 刪除依賴。

要求

  • 在Python中

顯影劑的其他軟件 Zope Corporation and Contributors

zope.location
zope.location

14 Apr 15

refline.srccheck
refline.srccheck

14 Apr 15

zope.pagetemplate
zope.pagetemplate

11 May 15

zc.resourcelibrary
zc.resourcelibrary

15 Apr 15

意見 zope.principalannotation

評論沒有發現
添加評論
打開圖片!