zope.principalannotation

Software kuvakaappaus:
zope.principalannotation
Ohjelmiston tiedot:
Versio: 4.0.0 Alpha 2
Lähetyksen päivämäärä: 14 Apr 15
Lupa: Vapaa
Suosio: 0

Rating: 5.0/5 (Total Votes: 1)

zope.principalannotation on Python-moduuli, joka toteuttaa annotointeja zope.security rehtorien. & Nbsp; tehdä selväksi, pääasiallinen tässä on esine, joka tarjoaa zope.security.interfaces.IPrincipal käyttöliittymä ja merkinnät on objekti tarjoaa zope-. annotation.interfaces.IAnnotations.
Ongelmana on, että rehtorien on dynaaminen, ei-pysyviä objekteja luodaan lennossa jokaisen turvallisuuden osallistumisen (pyynnöstä tai jotain), niin yleinen kommentointi tekniikoita, kuten AttributeAnnotations ei voida soveltaa niihin.
Tämä paketti sisältää pysyviä varastointi pääasiallinen merkintöjä, tallentamiseen merkintöjä pääasiallisen tunnus sekä sovittimen IPrincipal kohteeseen IAnnotations.
PrincipalAnnotationUtility
Ydin tämä paketti on PrincipalAnnotationUtility luokka, joka tallentaa merkintöjä sekä päämiehille avulla saada ne helposti.
Se tarjoaa IPrincipalAnnotationUtility liitäntä:
>>> Alkaen zope.principalannotation.interfaces tuoda IPrincipalAnnotationUtility
>>> Alkaen zope.principalannotation.utility tuonti PrincipalAnnotationUtility
>>> Alkaen zope.interface.verify tuonti verifyObject
>>> Util = PrincipalAnnotationUtility ()
>>> VerifyObject (IPrincipalAnnotationUtility, util)
Totta
Se tarjoaa kolme tapaa: getAnnotations, getAnnotationsById ja hasAnnotations. Luodaan testaus- pääasiallinen ja tarkistaa nämä menetelmät:
>>> Alkaen zope.security.testing tuonti Vastuullinen
>>> Nadako = Principal ('nadako')
>>> Nadako.id
"Nadako"
Voimme tarkistaa, onko meidän pääasiallinen on mitään merkintöjä. Tietenkin, se ei tällä hetkellä ole mitään:
>>> Util.hasAnnotations (nadako)
Väärä
Voimme saada IAnnotations objektin pääasiallinen kohde itse:
>>> Util.getAnnotations (nadako)

Tai käyttämällä pääasiallinen id:
>>> Util.getAnnotationsById (nadako.id)

Mennään IAnnotations vastustaa meidän pääasiallinen ja leikkiä sen kanssa:
>>> Annots = util.getAnnotations (nadako)
>>> Alkaen zope.interface.verify tuonti verifyObject
>>> Alkaen zope.annotation.interfaces tuonti IAnnotations
>>> VerifyObject (IAnnotations, annots)
Totta
Katsotaan tarkistaa IAnnotation sopimus:
>>> Bool (annots)
Väärä
>>> Annots ['not.here']
Paluuseurannan (viimeisin puhelu viimeinen):
...
KeyError: "not.here"
>>> Annots.get (not.here ') on None
Totta
>>> Annots.get ("not.here ', 42)
42
Huomaa, että IAnnotations esine saa tallennettu apuohjelma vasta kun asetamme avain siihen. Tämä on yksinkertainen optimointi, jonka avulla voimme olla tallenna mitään tietoja, kun kaikki emme yksinkertaisesti tarkistaa presense että huomautusta. HasAnnotations menetelmä palauttaa True tallennuksen jälkeen avain merkinnät:
>>> Util.hasAnnotations (nadako)
Väärä
>>> Annots ['its.here'] = 'joitakin info "
>>> Util.hasAnnotations (nadako)
Totta
Voimme myös poistaa olemassa olevia avain:
>>> Del annots ['its.here']
Mutta emme voi poistaa avaimen, joka on (enää) existant:
>>> Del annots ['its.here']
Paluuseurannan (viimeisin puhelu viimeinen):
...
KeyError: "its.here"
Useita kommentointi apuohjelmat
Kuvittele, että hakemus on root sivuston objekti sen osan rekisterin (aka site manager), ja että esine on osa-sivuston kohde on oma komponentti rekisterin, ja että osa rekisterin on pääkäyttäjän komponentti rekisterin tukikohtanaan.
Siinä tapauksessa, haluamme IAnnotations vastustaa käytettävissä hakea merkintöjä korkeamman tason apuohjelmia.
Katsotaanpa rekisteröityä meidän apuohjelma juureen sivuston ja luoda osa-sivuston oma IPrincipalAnnotationUtility:
>>> Root ['util'] = util
>>> Rootsm = root.getSiteManager ()
>>> Rootsm.registerUtility (util, IPrincipalAnnotationUtility)
>>> Alkaen zope.site.folder tuonnin kansioon
>>> Alkaen zope.site.site tuonti LocalSiteManager
>>> Alisivusto = Kansio ()
>>> Root ['alisivusto'] = alisivusto
>>> Subsm = LocalSiteManager (alisivusto)
>>> Subsm .__ bases__ = (rootsm,)
>>> Subsite.setSiteManager (subsm)
>>> Util2 = PrincipalAnnotationUtility ()
>>> Alisivusto ['util2'] = util2
>>> Subsm.registerUtility (util2, IPrincipalAnnotationUtility)
Nyt, luoda avaimen IAnnotations, jos root apuohjelma:
>>> Annots = util.getAnnotations (nadako)
>>> Annots ['root.number'] = 42
Alisivusto apuohjelma pitäisi saada merkintä onnistuneesti:
>>> Annots2 = util2.getAnnotations (nadako)
>>> Bool (annots2)
Totta
>>> Annots2 ['root.number']
42
Jos meillä on avain sekä korkeamman tason merkintöjä ja alemman tason niitä, alemman tason on etusijalla, mutta korkeamman tason ei poisteta tai overriden:
>>> Annots ['another.number'] = 1
>>> Annots2 ['another.number'] = 42
>>> Annots ['another.number']
1
>>> Annots2 ['another.number']
42
Jos me poistaa avain alemman tason, sitä ei poisteta korkeampi apuohjelma:
>>> Del annots2 ['another.number']
>>> Annots ['another.number']
1
>>> Annots2 ['another.number']
1
IPrincipal -> IAnnotations adapteri
Tietenkin kaikkein mukava ominaisuus on, että voimme yksinkertaisesti sopeutua meidän pääasiallinen kohde IAnnotations ja saada nämä merkinnät käyttämällä tavallinen dokumentoitu zope.annotation paketti.
& Nbsp; >>> annots = IAnnotations (nadako)
& Nbsp; >>> annots
& Nbsp;
& Nbsp; >>> annots ['root.number']
& Nbsp; 42
Oletuksena IAnnotation sovitin käyttää nykyisen sivuston hyödyllisyys:
>>> IAnnotations (nadako) on util.getAnnotations (nadako)
Totta
>>> Alkaen zope.site.hooks tuonti setSite
>>> SetSite (alisivusto)
>>> IAnnotations (nadako) on util2.getAnnotations (nadako)
Totta
Howerver, voimme käyttää binary monen sovittimen IAnnotations tarkentaa joitakin kontekstiobjekti josta saat merkinnät apuohjelma:
>>> Alkaen zope.component tuonti getMultiAdapter
>>> Annots = getMultiAdapter ((nadako, root), IAnnotations)
>>> Annots on util.getAnnotations (nadako)
Totta
>>> Annots = getMultiAdapter ((nadako, alisivusto), IAnnotations)
>>> Annots on util2.getAnnotations (nadako)
True

Mitä uutta tässä julkaisussa:

  • Korjattu Trove luokittimia.

Mitä uutta versiossa 3.6.1:

  • Kiinteä testivika sisäkkäin paikallinen sivusto johtaja setup .
  • Poistettu riippuvuus zope.container.

Vaatimukset :

  • Python

Muu ohjelmistojen kehittäjä Zope Corporation and Contributors

zope.pagetemplate
zope.pagetemplate

11 May 15

zope.index
zope.index

14 Apr 15

zope.browserpage
zope.browserpage

20 Feb 15

zope.file
zope.file

14 Apr 15

Kommentit zope.principalannotation

Kommentteja ei löytynyt
Lisää kommentti
Ota kuvia!