dm.zope.schema

ソフトウェアのスクリーンショット:
dm.zope.schema
ソフトウェアの詳細:
バージョン: 2.0
日付のアップロード: 14 Apr 15
開発者: Dieter Maurer
ライセンス: 無料
人気: 3

Rating: nan/5 (Total Votes: 0)

dm.zope.schemaはzope.schema用の拡張機能が含まれています。
<強い>モジュールの
確認する
インタフェースのスキーマ部にzope.interface.verifyする仲間。
それは、objが、インターフェースのifaceのスキーマ部分を満たしていることを検証する機能verify_schema(ifaceを、OBJ、コンテキスト=なし、check_declaration = TRUE)が含まれています。スキーマのフィールドは、彼らが検証される前にコンテキストにバインドを取得する必要があります。コンテキストは、objにこのコンテキストとデフォルト値を指定します。 objがIFACEをprivideを宣言check_declarationをチェックします。
スキーマ
主な内容は、ミックスインクラスSchemaConfiguredです。それはSchemaConfigured派生クラスによって実装されるインタフェースのスキーマ一部の形態の構成をサポートしています。あなたはそこからスキーマが派生しインターフェースを制御したい場合は、クラス属性SC_SCHEMASを使用することができます。その値はNone(実装されたインタフェースから自動的にスキーマを導き出す)、単一のインターフェイスまたはインターフェイスのタプルてはならない。 (彼らの基本クラスOFS.SimpleItem.SimpleItemフィールドあなたはおそらく自分のスキーマにしたくないインタフェースの膨大な数を実装していたように)スキーマを決定するのに使用されるインタフェースを明示的に制御を取ることのZope 2スキーマ構成されたコンテンツクラスのために特に重要です。
ミックスインクラスSchemaConfiguredEvolutionは(ZODB)永続オブジェクトのスキーマ進化のためのサポートを提供します。その__setstate__は、あなたのスキーマに新しいフィールドを追加し、まだそれらが拡張する前に作成されていても、それぞれのオブジェクトに対応するすべての属性を見つけることができるようなオブジェクトに不足している属性を追加。注:SchemaConfiguredEvolutionを効果的にするためには、それがメソッド解決順序(MRO)(persistent.Persistent前)に早く来なければなりません。別のクラスであり、その機能はSchemaConfigured自体に(MRO下旬SchemaConfiguredたのはもっともな理由があるかもしれ)は含まれていない理由です。 SchemaConfiguredEvolutionを使用する代わりに、新しいフィールドのクラス·レベルで定義されたデフォルト値を使用することができます。
時折、関数schemaitemsとschemadictは便利かもしれません。彼らはそれぞれ、ID、フィールドのペアや辞書のリストとしてインターフェイスまたはインターフェイス仕様のスキーマ部分を抽出します。
フィールドオブジェクトはzope.schema.Objectための代替品です。後者は、影響を受けたフィールドの特定が不必要に困難に検証エラー(https://bugs.launchpad.net/zope.schema/+bug/620324)におけるフィールド情報を欠いている。時折、人は、検証の目的は、明示的インターフェイスを提供する宣言チェックを抑制したい。 Objectこの(デフォルトはtrue)を制御するための追加のプロパティcheck_declarationを持っています。
PropertyManagerの
このモジュールは、サブクラスOFS.PropertyManager.PropertyManagerベースのスキーマを実装しています。 _propertiesは、クラスまたはそのインスタンス上で維持されているが、対応する(それぞれ実装された)スキーマに由来しないプロパティを記述する属性。現時点では、プロパティは、(別のスキーマを提供することによって以外の)インスタンスベースのレベルに拡張することはできません。
zope.schemaは、テキストを表すためにはUnicodeを使用します。 PropertyManagerが原則サポートUnicodeプロパティでできる。バグ/弱さに、財産管理ページのみ、management_page_charsetが定義されていない場合、それらを正しく処理するか、値UTF-8を有するためしかし、(大文字のスペルに注意してください!)。 management_page_charset.upper()はUTF-8と異なる値が得られない限り、我々は、デフォルトではUnicodeプロパティを使用します。またmanagement_page_charsetための大文字のスペルにはZopeの愚かな主張を回避するためのミックスインクラスWorkaroundSpelling_management_page_charsetを提供する。
現時点では、次のフィールドタイプがサポートされていますのTextLineまたはBytesLineの値の型を持つテキスト、のTextLine、バイト、BytesLine`、ブール、INT、フロートとリスト。他のタイプはNotImplementedErrorを送出発生させます。
モジュールはdm.zope.generateを活用するために実装されました。代替案は、「zope.formlib」に基づいて、発電設備の導入や、いわゆるアド形の使用されていると思います。経験に応じて、私は、この代替に切り替えることがあります。
フォーム
モジュールはdm.zope.schema.schema.SchemaConfiguredのデフォルトの編集(SchemaConfiguredEditForm)と表示(SchemaConfiguredDisplayForm)フォームを定義します。
それはzope.formlibに依存します。
ウィジェット
はtimedeltaフィールドの表示と編集のウィジェットを提供し、パスワードフィールドのまともな表示ウィジェット(クリアテキストのデフォルトのディスプレイのパスワード)と、フォームを編集するたびにパスワードの値を提供することを強制するものではありませんパスワードの入力ウィジェット。
それは古いZopeのバージョンでと新しいものでzope.formlibにzope.app.formに依存します。
Z2
このサブパッケージは、スキーマに関連し、Zopeの2機能性を兼ね備えています。新しいZopeのバージョンでは、five.formlibに依存します。
フォーム
モジュールは、Zopeの2で使用するためにdm.zope.schema.schema.SchemaConfiguredのデフォルトの編集(SchemaConfiguredEditForm)と表示(SchemaConfiguredDisplayForm)フォームを定義します。
それはzope.formlibに依存します。
コンストラクタ
このモジュールは、dm.zope.schema.schema.SchemaConfiguredベースのクラスのための追加フォームクラスSchemaConfiguredAddFormと(Zopeの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インタフェース内のZope 2スキーマ構成されたコンテンツオブジェクトを表示および編集することがビューページテンプレートform_templateを提供します。
の例
セットアップ:それは2のスキーマS1およびS2、IおよびクラスCはスキーマとインタフェースを実装SchemaConfiguredから派生するインタフェースを定義します。
>>> zope.interfaceインポート·インターフェース、実装、providedByから
>>> zope.schemaインポートをINTから
>>>
>>> dm.zope.schema.schemaのインポートからSchemaConfigured
>>> dm.zope.schema.verify輸入verify_schemaから
>>>
>>>クラスS1(インタフェース):I1 = INT(デフォルト= 0)
...
>>>クラスS2(インタフェース):I2 = INT(デフォルト= 1)
...
>>>クラスI(インタフェース):
... DEF方法():パス
...
>>>クラスC(SchemaConfigured):
...用具(S1、S2、I)
... DEF方法(自己):パス
...
Cのインスタンスは、スキーマの各フィールドに対応する属性を持っている。引数がコンストラクタのために与えられていない場合は、値としてフィールドのデフォルト値を取得する。提供(キーワード!)の引数は、デフォルトを上書き。
>>> cはC()
>>> c.i1
0
>>> c.i2
1
>>> cはC(= 5 i1の)
>>> c.i1
5
コンストラクタは、すぐにスペルミスを検出するために、スキーマで定義されていないキーワード引数を拒否します。しかし、これは__init__メソッドのクラス階層内のスーパーの使用を妨げる。たぶん、将来のバージョンでは、このチェックを制御する手段を提供します。
>>> cはC(= 5×)
トレースバック(最新の呼び出し最後):
&NBSP; ...
例外TypeError:非スキーマキーワード引数: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のサブパッケージにはZope 2のために使用可能です。
>>> zope.publisher.browserインポートTestRequestから
>>> dm.zope.schema.form輸入SchemaConfiguredEditFormから
>>>
>>>フォーム= SchemaConfiguredEditForm(C、TestRequest())
>>>リスト([form.form_fieldsでfに対する.__ name__ F])
['I1'、 'I2']

のこのリリースで新しいのは何ですか。

  • フォームをサポートします。
  • のZope 2コンストラクタをサポートします。

の要件

  • のPythonます。

開発者の他のソフトウェア Dieter Maurer

dm.zdoc
dm.zdoc

14 Apr 15

へのコメント dm.zope.schema

コメントが見つかりません
コメントを追加
画像をオンにする!