zope.principalannotation

소프트웨어 스크린 샷:
zope.principalannotation
소프트웨어 정보:
버전: 4.0.0 Alpha 2
업로드 날짜: 14 Apr 15
라이센스: 무료
인기: 5

Rating: 5.0/5 (Total Votes: 1)

.

zope.principalannotation 파이썬 zope.security 주체에 대한 주석을 구현하는 모듈 & NBSP이며 그것은 명확하게하기 위해이 여기 교장은 zope.security.interfaces.IPrincipal 인터페이스와 주석을 제공하는 목적은 조프 제공하는 객체입니다. annotation.interfaces.IAnnotations.
문제는 주체가 모든 보안 참여 (요청 또는 무언가) 미국 즉시 동적 생성, 비 지속성 개체이므로 AttributeAnnotations 주석 같은 일반적인 기법은 이들에 적용 할 수 없다는 점이다.
이 패키지는 기본 아이디로 주석뿐만 아니라 IAnnotations에 IPrincipal에서 어댑터를 저장, 주요 주석의 영구 저장소를 제공합니다.
PrincipalAnnotationUtility
이 패키지의 핵심은 주체에 대한 주석을 저장하고 쉽게 얻을 수 PrincipalAnnotationUtility 클래스입니다.
그것은 IPrincipalAnnotationUtility 인터페이스를 제공합니다 :
>>> zope.principalannotation.interfaces가 IPrincipalAnnotationUtility를 가져올에서
>>> zope.principalannotation.utility 수입 PrincipalAnnotationUtility에서
>>> zope.interface.verify 수입 verifyObject에서
>>> 폴더의 유틸리티 = PrincipalAnnotationUtility ()
>>> verifyObject (IPrincipalAnnotationUtility, UTIL)
참된
getAnnotations, getAnnotationsById 및 hasAnnotations의 세 가지 방법을 제공합니다. 이제 테스트 주체를 생성하고이 방법을 확인하자
>>> zope.security.testing 수입 교장 선생님
>>> nadako = 교장 ( 'nadako')
>>> nadako.id
'nadako'
우리의 주체가 어떤 주석이있는 경우 우리는 확인할 수 있습니다. 물론, 현재 어떤을 가지고 있지 않습니다
>>> util.hasAnnotations (n​​adako)
그릇된
우리는 IAnnotations 원금 객체 자체를 사용하여 객체를 얻을 수 있습니다 :
>>> util.getAnnotations (n​​adako)

나 교장 ID를 사용 :
>>> util.getAnnotationsById (nadako.id)

의는 IAnnotations 우리의 주체 개체와 함께 플레이하자 :
>>> annots의 =의 util.getAnnotations (n​​adako)
>>> 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 (n​​adako)
그릇된
>>> annots은 = '약간의 정보를'[ 'its.here']
>>> util.hasAnnotations (n​​adako)
참된
우리는 또한 기존의 키를 삭제할 수 있습니다 :
>>> 델 annots는 [ 'its.here']
그러나 우리는 (더 이상) 존재하지 않는이 키를 삭제할 수 없습니다 :
>>> 델 annots는 [ 'its.here']
역 추적 (가장 최근 통화 마지막) :
...
KeyError를은 'its.here'
여러 주석 유틸리티
응용 프로그램의 구성 요소 레지스트리 루트 사이트 개체 (일명 사이트 관리자)가 해당 객체는 자신의 구성 요소 레지스트리 하위 사이트 개체를 가지고 있으며, 해당 구성 요소의 레지스트리가 기본으로 루트의 구성 요소 레지스트리가 있는지 상상해 보라.
이 경우, 우리는 IAnnotations 높은 수준 유틸리티에서 주석을 검색하는 데 사용할 수 객체 원한다.
의 루트 사이트에 우리의 유틸리티를 등록하고 자신의 IPrincipalAnnotationUtility와 하위 사이트를 만들어 보자 :
>>> 루트 [ '폴더의 유틸리티'] = 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의 키를 생성 할 수 있습니다 :
>>> annots의 =의 util.getAnnotations (n​​adako)
>>> annots [ 'root.number는'] (42)를 =
하위 사이트 유틸리티가 성공적으로 주석을 얻어야한다 :
>>> annots2 = util2.getAnnotations (n​​adako)
>>> 부울 (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 패키지에 설명 된 표준 방법을 사용하여 해당 주석을 얻을 수 있다는 것입니다.
& NBSP; >>> annots = IAnnotations (n​​adako)
& NBSP; >>> annots
& NBSP;
& NBSP; >>> annots [ 'root.number']
& NBSP; (42)
기본적 IAnnotation 어댑터는 현재 사이트의 유틸리티를 사용하여
>>> IAnnotations (n​​adako)는 (nadako) util.getAnnotations입니다
참된
>>> zope.site.hooks 수입 한 SetSite에서
>>> SetSite는 (하위 사이트)
>>> IAnnotations (n​​adako)는 (nadako) util2.getAnnotations입니다
참된
Howerver, 우리는 주석 유틸리티를 얻는 일부 컨텍스트 개체를 지정할 수 IAnnotations에 대해 2 진 멀티 어댑터를 사용할 수 있습니다 :
>>> zope.component 수입 getMultiAdapter에서
>>> annots = getMultiAdapter ((nadako, 루트), IAnnotations)
>>> annots가 util.getAnnotations (n​​adako)
참된
>>> annots = getMultiAdapter ((nadako, 하위 사이트), IAnnotations)
>>> annots가 util2.getAnnotations (n​​adako)
사실

이 릴리스의 새로운 기능입니다 :

이 수정 셋째, Trove 분류.

이 버전 3.6.1의 새로운 기능 :

이 중첩 된 로컬 사이트 관리자 설정에서 테스트 실패를 수정했습니다.
zope.container에 제거 의존.

이 요구 사항 :

이 파이썬

개발자의 기타 소프트웨어 Zope Corporation and Contributors

zope.tal
zope.tal

11 May 15

zope.schema
zope.schema

14 Apr 15

zope.fanstatic
zope.fanstatic

11 May 15

코멘트 zope.principalannotation

댓글을 찾을 수 없습니다
코멘트를 추가
이미지를 켜십시오!