dm.zope.schema는 zope.schema에 대한 확장이 포함되어 있습니다.
모듈
확인
동반자는 인터페이스의 스키마 부분에 대한 zope.interface.verify합니다.
그것은 함수 verify_schema를 포함 (IFACE, OBJ, 문맥 = 없음, check_declaration = 참) 인터페이스 IFACE의 OBJ 만족 스키마 부분을 확인합니다. 스키마 필드가 검증되기 전에 문맥에 바인드하는 데 필요한. 문맥은 OBJ이 컨텍스트 및 기본값을 지정합니다. obj가 IFACE을 privide하는 선언 검사 check_declaration.
스키마
주요 내용은 SchemaConfigured 믹스 인 클래스입니다. 그것은 SchemaConfigured 파생 클래스에 의해 구현 된 인터페이스의 스키마 부분에 따라 구성을 지원합니다. 당신이있는 스키마가 파생 된 인터페이스 제어하려는 경우, 당신은 클래스 속성 SC_SCHEMAS을 사용할 수 있습니다 : 그 값은 없음 (구현 된 인터페이스에서 자동으로 스키마를 유도), 단일 인터페이스 나 인터페이스의 튜플 없어야합니다. (자신의 기본 클래스 OFS.SimpleItem.SimpleItem이 필드는 가능성이 스키마에 원하지 않는 인터페이스의 거대한 숫자를 구현 등) 스키마를 결정하는 데 사용되는 인터페이스를 통해 명시 적으로 제어를 복용 조프 2 스키마 구성된 콘텐트 클래스에 특히 중요하다.
믹스 인 클래스 SchemaConfiguredEvolution은 (ZODB) 영구 객체에 대한 스키마 진화에 대한 지원을 제공합니다. 그 __setstate__ 당신이 당신의 스키마에 새 필드를 추가하고 여전히 사람들이 확장 이전에 생성 된 경우에도 각각의 객체에 해당하는 모든 특성을 찾을 수 있도록 객체에 속성을 누락 추가합니다. 참고 : 효과가 SchemaConfiguredEvolution 위해서는, 조기 (persistent.Persistent 전) 방법 확인 순서 (MRO) 들어 와서해야합니다. 별도의 클래스이며, 그 기능은 SchemaConfigured 자체 (MRO 후반 SchemaConfigured 한 좋은 이유가있을 수 있습니다) 포함되지 않은 이유입니다. SchemaConfiguredEvolution의 사용에 대안으로 새로운 필드에 대한 클래스 레벨에서 정의 된 디폴트 값을 사용할 수있다.
때때로, 기능 schemaitems 및 schemadict는 유용 할 수 있습니다. 그들은 각각 ID의 목록, 필드 쌍 또는 사전과 같은 인터페이스 나 인터페이스 사양의 스키마 부분의 압축을 풉니 다.
필드 개체 zope.schema.Object을 대신합니다. 후자는 불필요하게 어려운 영향을받는 필드의 식별을하게 유효성 검사 오류에 필드 정보 (https://bugs.launchpad.net/zope.schema/+bug/620324)이 부족하다. 때때로, 하나의 검증 객체를 명시 적 인터페이스를 제공하기 위해 선언 검사를 억제하기를 원한다. 개체가이 (디폴트는 true)를 제어 할 수있는 추가 속성 check_declaration 있습니다.
PropertyManager의
이 모듈은 스키마를 기반으로 OFS.PropertyManager.PropertyManager 서브 클래스를 구현합니다. _properties는 특성을 설명하는 클래스 또는 인스턴스에서 유지하지만, 제공 (각각 구현) 스키마에서 파생되지 않은 속성. 순간, 속성 (다른 스키마를 제공하여 제외) 인스턴스 기반의 수준에서 확장 할 수 없습니다.
zope.schema 텍스트를 표현하기 위해 유니 코드를 사용합니다. 원칙적으로 지원 유니 코드 속성에서 할 수 PropertyManager의. 버그 / 약점, 자산 관리 페이지 만, management_page_charset가 정의되지 않은 경우 올바르게 처리 또는 값이 UTF-8이 때문에 그러나, (대문자 맞춤법에주의!). management_page_charset.upper ()가 UTF-8 다른 값을 산출하지 않는 한 우리는 기본적으로 유니 코드 속성을 사용합니다. 우리는 또한 management_page_charset에 대한 대문자 맞춤법에 조프의 어리석은 주장를 해결하기 위해 믹스 인 클래스 WorkaroundSpelling_management_page_charset을 제공합니다.
순간, 다음 필드 유형이 지원됩니다 텍스트, TextLine이는, 바이트, BytesLine`는 BOOL은 지능이있는 TextLine 또는 BytesLine의 값 형식으로 플로트와 목록. 다른 유형의 NotImplementedError을 올릴 것이다.
모듈은 dm.zope.generate을 활용하여 구현되었습니다. 대안은 "zope.formlib"및 소위 부가 형성의 사용에 기초하여 발전 설비를 구현했을 것이다. 경험에 따라,이 대안으로 전환 할 수 있습니다.
형태
이 모듈은 기본 편집 (SchemaConfiguredEditForm)과 dm.zope.schema.schema.SchemaConfigured의 표시 (SchemaConfiguredDisplayForm) 형태를 정의합니다.
그것은 zope.formlib에 따라 달라집니다.
위젯
Timedelta 필드에 대한 표시 및 편집 위젯을 제공, 암호 필드에 알맞은 화면 위젯 (일반 텍스트의 기본 표시 암호) 및 양식을 편집 할 때마다 암호 값을 제공하도록 강요하지 않는 암호를 입력 위젯.
그것은 이전 조프 버전과 새로운 것들에 zope.formlib에 zope.app.form에 따라 달라집니다.
Z2
이 서브 패키지는 스키마 관련 결합 조프 2 기능을 제공합니다. 새로운 조프 버전에서는 five.formlib에 따라 달라집니다.
형태
이 모듈은 조프 2에서 사용하기 위해 dm.zope.schema.schema.SchemaConfigured에 대한 기본 편집 (SchemaConfiguredEditForm) 및 디스플레이 (SchemaConfiguredDisplayForm) 형태를 정의합니다.
그것은 zope.formlib에 따라 달라집니다.
생성자
이 모듈은 dm.zope.schema.schema.SchemaConfigured 기반 클래스에 대한 추가 양식 클래스 SchemaConfiguredAddForm과 (조프 2 "생성자"라고 함) 추가 양식의 생성을위한 공장 add_form_factory가 포함되어 있습니다. 생성 된 추가 양식은 일반적으로있는 registerClass에 생성자 매개 변수의 일부로 사용된다.
add_form_factory는 매개 변수가 있습니다 :
& NBSP; 이름 기본 설명
& NBSP;위한 형태를 생성하는 클래스 class_
& NBSP; 제목은 제목 형태로 표시 class_의 인스턴스를 생성
& NBSP; 설명 클래스는 _.__ 형태로 표시된 문서를 doc__를
& NBSP는; SchemaConfiguredAddForm 양식 클래스 form_class 사용되는
add_form_factory는 dm.zope.schema.schema.SchemaConfigured 클래스 class_의 구현 스키마에 의해 정의 필드 zope.formlib 양식을 생성합니다.
이 모듈은 dm.zope.generate.constructor 유사합니다. 후자 PropertyManager에 기초하여 클래스를 지원하는 반면, 그것은 SchemaConfigured 기반 클래스 작동한다.
주형
보고 조프에게 표준 ZMI 인터페이스의 2 스키마 구성된 콘텐트 객체를 편집 할 수보기 페이지 템플릿 form_template를 제공합니다.
예를 들면
설정 :이 두 스키마 S1 및 S2, I 및 클래스 C는 스키마와 인터페이스를 구현 SchemaConfigured에서 파생 인터페이스를 정의합니다.
>>> zope.interface 가져 오기 인터페이스, 구현, providedBy에서
>>> zope.schema 수입을 int에서
>>>
>>> dm.zope.schema.schema 가져 오기에서 SchemaConfigured
>>> dm.zope.schema.verify 수입 verify_schema에서
>>>
>>> 클래스 S1 (인터페이스) : I1 = 지능 (기본값 = 0)
...
>>> 클래스 S2 (인터페이스) : I2 = 지능 (기본값 = 1)
...
>>> 클래스 I (인터페이스) :
... 데프 방법 () : 패스
...
>>> 클래스 C (SchemaConfigured) :
... 구현 (S1, S2, I)
... 데프 방법 (자기) : 패스
...
C 인스턴스는 스키마 필드에 해당하는 속성을 가지고있다. 인수가 생성자를 제공하지 않으면, 그들은 값으로 필드 기본값을 얻는다. 제공 (키워드!) 인수는 기본값을 재정의합니다.
>>> C = C ()
>>> c.i1
0
>>> c.i2
(1)
>>>의 C = C를 (I1 = 5)
>>> c.i1
(5)
생성자 신속 철자 오류를 검출하기 위해 스키마에 정의되어 있지 않은 키워드 인수를 거부한다. 그러나,이 방법에 대한 __init__ 클래스 계층 슈퍼의 사용을 방해한다. 어쩌면 미래 버전이 확인을 제어하는 수단을 제공 할 것이다.
>>> C = C (X = 5)
역 추적 (가장 최근 통화 마지막) :
& NBSP; ...
형식 오류 : 비 스키마 키워드 인수 : X
필드 값이 적절한 경우, C 인스턴스 (verify_schema 의해 확인 된 바와 같이) 스키마를 제공한다. 그렇지 않으면, verify_schema는 예외가 발생합니다. 이 예는 또한 verify_schema의 초등학교를 사용하는 방법을 보여줍니다.
>>> verify_schema (S1, C)
>>> c.i1 = 없음
>>> verify_schema (S1, C)
역 추적 (가장 최근 통화 마지막) :
& NBSP; ...
zope.schema.interfaces.WrongContainedType : ( 'I1', RequiredMissing ())]
우리는 우리의 객체에 대한 편집 (또는 디스플레이) 양식을 만들 수 있습니다. 양식 필드는 자동으로 우리의 스키마 필드에 생성됩니다. 양식 클래스를 사용하면 사용자 정의 필드 및 / 또는 위젯을 제공하기 위해 재정의 할 수 있습니다 customize_fields 방법이있다.
비슷한 기능은 Z2 서브 패키지에 조프 2 사용할 수 있습니다.
>>> zope.publisher.browser 수입 TestRequest에서
>>> dm.zope.schema.form 수입 SchemaConfiguredEditForm에서
>>>
>>> 형태 = SchemaConfiguredEditForm (C, TestRequest ())
>>> 목록 ([form.form_fields에서 F에 대한 .__ name__ F])
[ 'I1', 'I2']
이 릴리스의 새로운 기능입니다 :
이 양식 지원
조프 2 생성자 지원
이 요구 사항 :
이 파이썬
댓글을 찾을 수 없습니다