zope.principalannotation

Programinė įranga Screenshot:
zope.principalannotation
Programinė detalės:
Versija: 4.0.0 Alpha 2
Įkėlimo datą: 14 Apr 15
Licencija: Nemokamai
Populiarumas: 0

Rating: 5.0/5 (Total Votes: 1)

zope.principalannotation yra Python modulis, kuris įgyvendina komentarus už zope.security vadovų, & nbsp;. Kad būtų aišku, pagrindinis čia yra objektas, kuris suteikia zope.security.interfaces.IPrincipal sąsaja ir anotacijas yra objektas teikti Zope. annotation.interfaces.IAnnotations.
Problema ta, kad direktoriai yra dinamiškas, ne nuolatiniai objektai sukurtas dėl kiekvienos saugumo dalyvavimo (Užklausus ar kažkas) skristi, todėl bendra anotacija būdai, kaip AttributeAnnotations negali būti taikomos jiems.
Šis paketas suteikia nuolatinį saugojimą pagrindinių ženklų, saugoti komentarus pagal pagrindinio ID, taip pat adapterį nuo IPrincipal į IAnnotations.
PrincipalAnnotationUtility
Šio paketo esmė yra PrincipalAnnotationUtility klasė, saugo komentarus direktoriams ir leidžia juos gauti lengvai.
Ji suteikia IPrincipalAnnotationUtility sąsaja:
>>> Iš zope.principalannotation.interfaces importuoti IPrincipalAnnotationUtility
>>> Iš zope.principalannotation.utility importo PrincipalAnnotationUtility
>>> Iš zope.interface.verify importo verifyObject
>>> Util = PrincipalAnnotationUtility ()
>>> VerifyObject (IPrincipalAnnotationUtility, util)
Tiesa
Ji numato trijų metodų: getAnnotations, getAnnotationsById ir hasAnnotations. Kurkime testavimo vykdytoju patikrinkite šiuos metodus:
>>> Iš zope.security.testing importo Principal
>>> Nadako = Pagrindinis ("nadako)
>>> Nadako.id
"Nadako"
Mes galime patikrinti, ar mūsų pagrindinė turi kokių komentarų. Žinoma, šiuo metu neturi jokių:
>>> util.hasAnnotations (nadako)
Netikras
Mes galime gauti IAnnotations prieštarauti naudojant pačią pagrindinę objektą:
>>> util.getAnnotations (nadako)

Arba naudojant pagrindinę ID:
>>> Util.getAnnotationsById (nadako.id)

Leiskite gauti IAnnotations prieštarauti mūsų pagrindinės ir žaisti su juo:
>>> Annots = util.getAnnotations (nadako)
>>> Iš zope.interface.verify importo verifyObject
>>> Iš zope.annotation.interfaces importo IAnnotations
>>> VerifyObject (IAnnotations, annots)
Tiesa
Leiskite patikrinti IAnnotation sutartį:
>>> bool (annots)
Netikras
>>> annots ['not.here']
Traceback (naujausia skambutis paskutinis):
...
KeyError: "not.here"
>>> Annots.get (not.here) yra Nėra
Tiesa
>>> Annots.get (not.here ", 42)
42
Pastaba, kad IAnnotations objektas pasireiškia saugomi naudingumo tik tada, kai mes nustatytą, kad jai tai raktą. Tai paprasta optimizavimas, kuri leidžia mums nesaugoti bet kokius duomenis, kai visi mes tiesiog tikrinti presense iš anotacija. HasAnnotations metodas grįš Tiesa, po saugojimo anotacijose raktą:
>>> util.hasAnnotations (nadako)
Netikras
>>> annots ['its.here'] = 'šiek tiek info'
>>> util.hasAnnotations (nadako)
Tiesa
Mes taip pat galite ištrinti esamą raktą:
>>> Del annots ['its.here']
Bet mes negalime ištrinti raktą, kuris yra (ne daugiau) vis yra:
>>> Del annots ['its.here']
Traceback (naujausia skambutis paskutinis):
...
KeyError: "its.here"
Išsėtinė anotacija komunalinės
Įsivaizduokite, kad jūsų prašymas turi root svetainės objektą su jo komponentų registro (dar žinomas kaip Site Manager) ir kad objektas turi sub-svetainės objektą su savo komponentų registrą, ir kad komponentas registro turi root komponentų registro kaip savo bazę.
Tokiu atveju, mes norime, kad IAnnotations nesutikti, kad būtų galima gauti komentarus iš aukštesnio lygio komunalines paslaugas.
Leiskite užsiregistruoti mūsų naudingumą šakniniame svetainę ir sukurti sub-puslapį su savo IPrincipalAnnotationUtility:
>>> Šaknis ['util'] = util
>>> Rootsm = root.getSiteManager ()
>>> Rootsm.registerUtility (util, IPrincipalAnnotationUtility)
>>> Iš zope.site.folder importo aplankas
>>> Iš zope.site.site importo LocalSiteManager
>>> Vietovę, = aplankas ()
>>> Šaknis ['vietovę,'] = antrinę svetainę
>>> Subsm = LocalSiteManager (vietovę,)
>>> Subsm .__ bases__ = (rootsm,)
>>> Subsite.setSiteManager (subsm)
>>> Util2 = PrincipalAnnotationUtility ()
>>> Vietovę, ['util2'] = util2
>>> Subsm.registerUtility (util2, IPrincipalAnnotationUtility)
Dabar kurkime į IAnnotations raktą, pateiktą šaknų naudingumo:
>>> Annots = util.getAnnotations (nadako)
>>> annots ['root.number'] = 42
Vietovę, naudingumas turėtų gauti anotacija sėkmingai:
>>> Annots2 = util2.getAnnotations (nadako)
>>> Bool (annots2)
Tiesa
>>> Annots2 ['root.number']
42
Jei mes turime tiek aukštesnio lygio komentarų ir žemesnio lygio tie raktą, žemesnio lygio, turės pirmenybę, bet aukštesnio lygio nebus ištrinti ar svarbesni:
>>> annots ['another.number'] = 1
>>> Annots2 ['another.number'] = 42
>>> annots ['another.number']
1
>>> Annots2 ['another.number']
42
Jei mes ištrinti iš žemesnio lygio raktą, jis nebus išbrauktas iš aukštesnio lygio naudingumo:
>>> Del annots2 ['another.number']
>>> annots ['another.number']
1
>>> Annots2 ['another.number']
1
IPrincipal -> IAnnotations adapteris
Žinoma, labiausiai gražus bruožas yra tai, kad mes galime pritaikyti mūsų pagrindinį objektą IAnnotations ir gauti tuos komentarus, naudojant standartinį būdą dokumentuotą zope.annotation paketą.
& Nbsp; >>> annots = IAnnotations (nadako)
& Nbsp; >>> annots
& Nbsp;
& Nbsp; >>> annots ['root.number']
& Nbsp; 42
Pagal nutylėjimą, IAnnotation adapteris naudoja esamus svetainės naudingumas:
>>> IAnnotations (nadako) yra util.getAnnotations (nadako)
Tiesa
>>> Iš zope.site.hooks importo setSite
>>> SetSite (vietovę,)
>>> IAnnotations (nadako) yra util2.getAnnotations (nadako)
Tiesa
Howerver, mes galime naudoti dvejetainis multi-adapterį į IAnnotations nurodyti tam tikrą kontekstinę objektą iš kurios gauti anotacijos įrankis:
>>> Iš zope.component importo getMultiAdapter
>>> Annots = getMultiAdapter ((nadako, šaknis), IAnnotations)
>>> Annots yra util.getAnnotations (nadako)
Tiesa
>>> Annots = getMultiAdapter ((nadako, vietovę,), IAnnotations)
>>> Annots yra util2.getAnnotations (nadako)
Tiesa

Kas naujo , šioje laidoje:.

  • Pataisyti lobis klasifikatoriai

Kas naujo versijos 3.6.1:

  • Fiksuotas bandymo nepakankamumas lizdinėje vietos Site Manager setup .
  • Pašalinta priklausomybė nuo zope.container.

Reikalavimai :

  • Python

Kita programinė įranga kūrėjas Zope Corporation and Contributors

grokui.admin
grokui.admin

14 Apr 15

zope.html
zope.html

14 Apr 15

Komentarai zope.principalannotation

Komentarai nerastas
Pridėti komentarą
Pasukite ant paveikslėlio!