zope.principalannotation

Software screenshot:
zope.principalannotation
Podrobnosti Software:
Verze: 4.0.0 Alpha 2
Datum uploadu: 14 Apr 15
Licence: Volný
Popularita: 0

Rating: 5.0/5 (Total Votes: 1)

zope.principalannotation je Python modul, který implementuje poznámky pro zope.security jistin. & Nbsp; Chcete-li, aby bylo jasné, hlavní tady je objekt, který poskytuje zope.security.interfaces.IPrincipal rozhraní a anotací je objekt poskytující cejn. annotation.interfaces.IAnnotations.
Problém je, že principy jsou dynamické, non-perzistentní objekty vytvořené za běhu pro každý bezpečnostní účast (žádost, nebo tak něco), tak běžné anotace techniky, jako je AttributeAnnotations nelze aplikovat na ně.
Tento balíček poskytuje trvalé uložení základních poznámek, ukládání anotace hlavní ID, jakož i adaptér od IPrincipal do IAnnotations.
PrincipalAnnotationUtility
Jádro tohoto balíčku je třída PrincipalAnnotationUtility, která ukládá poznámky pro principy a umožňuje, aby si je snadno.
Poskytuje rozhraní IPrincipalAnnotationUtility:
>>> Z zope.principalannotation.interfaces import IPrincipalAnnotationUtility
>>> Z zope.principalannotation.utility dovozu PrincipalAnnotationUtility
>>> Z zope.interface.verify dovozu verifyObject
>>> Util = PrincipalAnnotationUtility ()
>>> VerifyObject (IPrincipalAnnotationUtility, util)
Pravdivý
Poskytuje tři metody: getAnnotations, getAnnotationsById a hasAnnotations. Pojďme vytvořit testovací jistinu a podívejte se na tyto metody:
>>> Z zope.security.testing dovozu ředitele
>>> Nadako = Principal ("nadako")
>>> Nadako.id
"Nadako"
Můžeme zjistit, zda náš hlavní má nějaké poznámky. Samozřejmě, že v současné době nemá žádné:
>>> util.hasAnnotations (nadako)
Falešný
Můžeme se dostat IAnnotations objektu pomocí hlavního objektu samotného:
>>> util.getAnnotations (nadako)

Nebo pomocí hlavní id:
>>> Util.getAnnotationsById (nadako.id)

Pojďme se IAnnotations námitky na našich hlavních a hrát si s ním:
>>> Annots = util.getAnnotations (nadako)
>>> Z zope.interface.verify dovozu verifyObject
>>> Z zope.annotation.interfaces dovozních IAnnotations
>>> VerifyObject (IAnnotations, annots)
Pravdivý
Pojďme zkontrolovat smlouvu IAnnotation:
>>> bool (annots)
Falešný
>>> annots ['not.here']
TraceBack (poslední hovor poslední):
...
KeyError: "not.here"
>>> Annots.get ("not.here") je None
Pravdivý
>>> Annots.get ("not.here ', 42),
42
Všimněte si, že objekt IAnnotations je uložena v nástroji pouze tehdy, když jsme se vydali na klíč pro něj. Jedná se o jednoduchý optimalizace, která nám umožňuje, aby ukládat data, kdy vše, co děláme, je prostě pro kontrolu presense anotace. Metoda hasAnnotations vrátí TRUE po uložení klíče v komentářích:
>>> util.hasAnnotations (nadako)
Falešný
>>> annots ['its.here'] = 'nějaké informace "
>>> util.hasAnnotations (nadako)
Pravdivý
Můžeme také odstranit existující klíč:
>>> Del annots ['its.here']
Ale nemůžeme odstranit klíč, který je (ne více) existant:
>>> Del annots ['its.here']
TraceBack (poslední hovor poslední):
...
KeyError: "its.here"
více anotace nástroje
Představte si, že vaše aplikace má kořenový server objekt s jeho složky registru (aka stavbyvedoucí), a že objekt má objekt sub-stránky s vlastní složky registru, a že registr komponenta má na korenové registr komponenty jako své základny.
V tomto případě, chceme, aby IAnnotations námitky k dispozici získat anotace z vyšší úrovně služby.
Pojďme registrovat své nástroje v kořenovém webu a vytvořit sub-stránky s vlastním IPrincipalAnnotationUtility:
>>> Kořen ['util'] = util
>>> Rootsm = root.getSiteManager ()
>>> Rootsm.registerUtility (util, IPrincipalAnnotationUtility)
>>> Z zope.site.folder import složky
>>> Z zope.site.site dovozu LocalSiteManager
>>> Subsite = Složka ()
>>> Kořen ['subsite'] = podřízený
>>> Subsm = LocalSiteManager (Subsite)
>>> Subsm .__ bases__ = (rootsm,)
>>> Subsite.setSiteManager (subsm)
>>> Util2 = PrincipalAnnotationUtility ()
>>> Subsite ['util2'] = util2
>>> Subsm.registerUtility (util2, IPrincipalAnnotationUtility)
Nyní pojďme vytvořit klíč v IAnnotations, za předpokladu, kořenů nástroje:
>>> Annots = util.getAnnotations (nadako)
>>> annots ['root.number'] = 42
Subsite Nástroj by měl dostat anotaci úspěšně:
>>> Annots2 = util2.getAnnotations (nadako)
>>> Bool (annots2)
Pravdivý
>>> Annots2 ['root.number']
42
Máme-li klíč jak v anotaci na vyšší úrovni a ty nižší úrovně, nižší úroveň bude mít přednost, ale na vyšší úrovni nebudou odstraněny nebo přepsáno:
>>> annots ['another.number'] = 1
>>> Annots2 ['another.number'] = 42
>>> annots ['another.number']
1
>>> Annots2 ['another.number']
42
Pokud budeme odstranit klíč z nižší úrovně, nebude odstraněna z vyšší úrovně nástroj:
>>> Del annots2 ['another.number']
>>> annots ['another.number']
1
>>> Annots2 ['another.number']
1
IPrincipal -> IAnnotations adaptér
Samozřejmě, že nejvíce příjemnou vlastností je, že můžeme jednoduše přizpůsobit naše hlavní objekt IAnnotations a dostat ty poznámky pomocí standardní způsob zdokumentován zope.annotation balení.
& Nbsp; >>> annots = IAnnotations (nadako)
& Nbsp; >>> annots
& Nbsp;
& Nbsp; >>> annots ['root.number']
& Nbsp; 42
Ve výchozím nastavení je adaptér IAnnotation používá nástroje aktuální webu:
>>> IAnnotations (nadako) je util.getAnnotations (nadako)
Pravdivý
>>> Z zope.site.hooks import setSite
>>> SetSite (Subsite)
>>> IAnnotations (nadako) je util2.getAnnotations (nadako)
Pravdivý
Howerver, můžeme použít binární multi-adaptér k IAnnotations určit nějaký objekt kontextu, ze kterého se dostat anotace nástroje:
>>> Z zope.component dovozu getMultiAdapter
>>> Annots = getMultiAdapter ((nadako, kořen), IAnnotations)
>>> Annots je util.getAnnotations (nadako)
Pravdivý
>>> Annots = getMultiAdapter ((nadako, podřízený), IAnnotations)
>>> Annots je util2.getAnnotations (nadako)
Pravda

Co je nového v této verzi:.

  • Opravené Trove classifiers

Co je nového ve verzi 3.6.1:

  • Pevná selhání test vnořené místní nastavení stavbyvedoucí .
  • Odstraněna závislost na zope.container.

Požadavky na :

  • Python

Ostatní software developer Zope Corporation and Contributors

Komentáře k zope.principalannotation

Komentáře nebyl nalezen
Přidat komentář
Zapnout obrázky!