zope.principalannotation

Screenshot Software:
zope.principalannotation
Mga detalye ng Software:
Bersyon: 4.0.0 Alpha 2
I-upload ang petsa: 14 Apr 15
Lisensya: Libre
Katanyagan: 5

Rating: 5.0/5 (Total Votes: 2)

zope.principalannotation ay isang Python module na ipinapatupad ng mga annotation para sa zope.security punong. & Nbsp; Upang gawing mas malinaw, ang punong-guro dito ay ang bagay na iyon ay nagbibigay ng zope.security.interfaces.IPrincipal interface at mga anotasyon ay ang bagay na nagbibigay zope. annotation.interfaces.IAnnotations.
Ang problema ay na punong ay pabago-bago, di-paulit-ulit na mga bagay na nilikha sa mabilisang para sa bawat pakikilahok sa seguridad (kahilingan o isang bagay), kaya diskarte sa karaniwang mga tala, tulad ng AttributeAnnotations Hindi mailalapat sa kanila.
Ang paketeng ito ay nagbibigay ng isang paulit-ulit na imbakan ng punong-guro ng mga anotasyon, pag-iimbak ng mga anotasyon sa pamamagitan ng punong-guro ID pati na rin ng adaptor mula IPrincipal sa IAnnotations.
PrincipalAnnotationUtility
Ang core ng package na ito ay ang PrincipalAnnotationUtility klase na nag-iimbak ng mga anotasyon para sa punong at nagbibigay-daan upang makakuha ng mga ito nang madali.
Ito ay nagbibigay ng interface IPrincipalAnnotationUtility:
>>> Mula zope.principalannotation.interfaces-import IPrincipalAnnotationUtility
>>> Mula zope.principalannotation.utility import PrincipalAnnotationUtility
>>> Mula zope.interface.verify import verifyObject
>>> Util = PrincipalAnnotationUtility ()
>>> VerifyObject (IPrincipalAnnotationUtility, util)
Totoo
Mayroon itong tatlong pamamaraan: getAnnotations, getAnnotationsById at hasAnnotations. Hayaan lumikha ng isang pagsubok prinsipal at tingnan ang mga paraang ito:
>>> Mula zope.security.testing import Principal
>>> Nadako = Principal ('nadako')
>>> Nadako.id
'Nadako'
Maaari naming suriin kung ang aming punong-guro ay may anumang mga anotasyon. Siyempre, ito sa kasalukuyan ay walang anumang:
>>> Util.hasAnnotations (nadako)
Hindi totoo
Maaari naming makakuha ng IAnnotations object gamit ang punong-guro ang sarili nito sa bagay na:
>>> Util.getAnnotations (nadako)

O paggamit ng punong-guro id:
>>> Util.getAnnotationsById (nadako.id)

Sabihin makuha ang IAnnotations object para sa aming mga punong-guro at maglaro na may ito:
>>> Annots = util.getAnnotations (nadako)
>>> Mula zope.interface.verify import verifyObject
>>> Mula zope.annotation.interfaces import IAnnotations
>>> VerifyObject (IAnnotations, annots)
Totoo
Tingnan natin ang kontrata IAnnotation Hayaan ang:
>>> Bool (annots)
Hindi totoo
>>> Annots ['not.here']
Traceback (pinakahuling tawag huling):
...
KeyError: 'not.here'
>>> Annots.get ('not.here') ay Wala
Totoo
>>> Annots.get ('not.here', 42)
42
Tandaan, na ang IAnnotations object ay makakakuha ng naka-imbak sa utility lamang kapag itinakda namin ang isang susi para dito. Ito ay isang simpleng pag-optimize na nagbibigay-daan sa amin hindi upang mag-imbak ng anumang data kapag ang lahat kami ay nagre-check para sa presense ng anotasyon. Ang pamamaraan hasAnnotations ay magbabalik True matapos ang pag-iimbak ng isang susi sa mga anotasyon:
>>> Util.hasAnnotations (nadako)
Hindi totoo
>>> Annots ['its.here'] = 'ilang impormasyon'
>>> Util.hasAnnotations (nadako)
Totoo
Maaari din naming tanggalin ang mga umiiral na key:
>>> Del annots ['its.here']
Ngunit hindi namin tanggalin ang key na (walang higit pa) existant:
>>> Del annots ['its.here']
Traceback (pinakahuling tawag huling):
...
KeyError: 'its.here'
Maramihang mga anotasyon utilities
Isipin na may isang root bagay na site na may mga bahagi ng registry (aka site manager) ang iyong application at may isang sub-site bagay na may sarili nitong bahagi registry bagay na iyon, at na bahagi ng registry ay bahagi ng registry root bilang base nito.
Sa kasong iyon, nais naming ang IAnnotations object na magagamit upang makuha ang mga anotasyon mula sa mga utility mas mataas na antas.
Hayaan magrehistro sa aming utility sa root ng site at lumikha ng isang sub-site na may sarili nitong IPrincipalAnnotationUtility:
>>> Ugat ['util'] = util
>>> Rootsm = root.getSiteManager ()
>>> Rootsm.registerUtility (util, IPrincipalAnnotationUtility)
>>> Mula zope.site.folder pag-import ng Folder
>>> Mula zope.site.site import LocalSiteManager
>>> Subsite = Folder ()
>>> Ugat ['subsite'] = subsite
>>> Subsm = LocalSiteManager (subsite)
>>> Subsm .__ bases__ = (rootsm,)
>>> Subsite.setSiteManager (subsm)
>>> Util2 = PrincipalAnnotationUtility ()
>>> Subsite ['util2'] = util2
>>> Subsm.registerUtility (util2, IPrincipalAnnotationUtility)
Ngayon, lumikha ng isang susi sa IAnnotations, na ibinigay ng ugat utility ipaalam:
>>> Annots = util.getAnnotations (nadako)
>>> Annots ['root.number'] = 42
Ang subsite utility ay dapat makuha ang mga anotasyon matagumpay:
>>> Annots2 = util2.getAnnotations (nadako)
>>> Bool (annots2)
Totoo
>>> Annots2 ['root.number']
42
Kung mayroon namin ang susi sa parehong mga anotasyon mas mataas na antas at mga mas mababang antas, ang mas mababang antas ay may priyoridad, ngunit mas mataas na antas ay hindi matatanggal o-override:
>>> Annots ['another.number'] = 1
>>> Annots2 ['another.number'] = 42
>>> Annots ['another.number']
1
>>> Annots2 ['another.number']
42
Kung namin tanggalin ang key mula sa mas mababang antas, hindi ito ay tatanggalin mula sa isang mas mataas na utility na antas:
>>> Del annots2 ['another.number']
>>> Annots ['another.number']
1
>>> Annots2 ['another.number']
1
IPrincipal -> IAnnotations adapter
Siyempre, ang pinaka-magaling na tampok ay na maaari lamang naming iangkop ang aming punong-guro bagay na upang IAnnotations at makakuha ng mga annotation gamit ang karaniwang paraan dokumentado sa zope.annotation package.
& Nbsp; >>> annots = IAnnotations (nadako)
& Nbsp; >>> annots
& Nbsp;
& Nbsp; >>> annots ['root.number']
& Nbsp; 42
Sa pamamagitan ng default, ang IAnnotation adaptor ay gumagamit ng utility sa kasalukuyang site:
>>> IAnnotations (nadako) ay util.getAnnotations (nadako)
Totoo
>>> Mula zope.site.hooks import setSite
>>> SetSite (subsite)
>>> IAnnotations (nadako) ay util2.getAnnotations (nadako)
Totoo
Howerver, maaari kaming gumamit ng isang binary multi-adapter sa IAnnotations upang tukuyin ang ilang mga bagay na konteksto mula sa kung saan upang makuha ang utility na anotasyon:
>>> Mula zope.component import getMultiAdapter
>>> Annots = getMultiAdapter ((nadako, ugat), IAnnotations)
>>> Annots ay util.getAnnotations (nadako)
Totoo
>>> Annots = getMultiAdapter ((nadako, subsite), IAnnotations)
>>> Annots ay util2.getAnnotations (nadako)
True

Ano ang bagong sa paglabas:.

  • Nawastong Trove classifiers

Ano ang bagong sa bersyon 3.6.1:

  • Fixed isang pagsubok pagkabigo sa Nested lokal na pag-setup ng site manager .
  • Inalis ang dependency sa zope.container.

Mga Kinakailangan :

  • Python

Iba pang mga software developer ng Zope Corporation and Contributors

zope.fanstatic
zope.fanstatic

11 May 15

zope.location
zope.location

14 Apr 15

zc.resourcelibrary
zc.resourcelibrary

15 Apr 15

zope.pagetemplate
zope.pagetemplate

11 May 15

Mga komento sa zope.principalannotation

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!