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 для частини схеми інтерфейсів.
Він містить функцію verify_schema (IFACE, OBJ, контекст = ні, check_declaration = True), який перевіряє, що OBJ задовольняє частина схеми інтерфейсу IFACE. Поля схеми потрібно отримати пов'язаний з контекстом, перш ніж вони можуть бути перевірені. Контекст визначає цей контекст і за замовчуванням OBJ. check_declaration перевіряє, що OBJ заявляє privide Iface.
схема
Основний зміст є домішка клас SchemaConfigured. Він підтримує конфігурацію відповідно до частини схеми інтерфейсів, реалізованих похідного класу SchemaConfigured. Якщо ви хочете керувати, з якою взаємодіє схема складена, ви можете використовувати атрибут класу SC_SCHEMAS: його значення не повинно бути None (вивести схему автоматично, виходячи з реалізованих інтерфейсів), єдиний інтерфейс або кортеж інтерфейсів. Беручи явний контроль над інтерфейсів, використовуваних для визначення схеми особливо важливо для Zope 2 схеми налаштованих класів змісту (як їх базовий клас OFS.SimpleItem.SimpleItem реалізує величезну кількість інтерфейсів, поля яких ви, мабуть, будете робити у вашій схемі не хочете).
Клас домішка SchemaConfiguredEvolution забезпечує підтримку еволюції схем для (ZODB) для постійних об'єктів. Його __setstate__ додає відсутніх атрибутів до об'єкта, що ви можете додавати нові поля до вашої схемою і як і раніше знайти всі відповідні атрибути відповідних об'єктів, навіть якщо ті були створені перед розширенням. Примітка: для того, щоб SchemaConfiguredEvolution, щоб бути ефективним, він повинен прийти раніше в порядку дозволу методів (MRO) (до persistent.Persistent). Ось чому це окремий клас і його функція не входить в самій SchemaConfigured (можуть бути вагомі причини, щоб SchemaConfigured в кінці MRO). В якості альтернативи використання SchemaConfiguredEvolution, ви можете використовувати значення за замовчуванням, задані на рівні класу для нових родовищ.
Іноді функції schemaitems і schemadict може бути корисно. Вони витягують частина схеми інтерфейсної або специфікації інтерфейсу у вигляді списку ID, пар поля або словник, відповідно.
Поле Об'єкт для заміни zope.schema.Object. В останнього немає інформаційного поля в помилках валідації (https://bugs.launchpad.net/zope.schema/+bug/620324), який робить ідентифікацію надмірно складних постраждалих областях. Іноді хтось хоче, щоб придушити Переконайтеся, що підтверджено об'єкт прямо заявляє, забезпечити інтерфейс. Об'єкт має додаткове check_declaration власності для управління цим (за замовчуванням true).
PropertyManager
Цей модуль реалізує схеми на основі OFS.PropertyManager.PropertyManager підклас. У _Недвіжімості атрибут опису властивостей не дозволені на класі або його примірників, але походить від наданих (відповідно реалізовано) схем. На даний момент, властивості не може бути продовжений на підставі рівня примірника (крім, надаючи іншій схемі).
zope.schema використовує Unicode для представлення тексту. PropertyManager в принципі, може властивостями підтримка Unicode. Тим не менш, через помилку / слабкості, сторінка управління власністю обробляє їх коректно тільки при management_page_charset не визначений або має значення UTF-8 (зверніть увагу на заголовну написанні!). Ми використовуємо Юникода властивості за замовчуванням, якщо management_page_charset.upper () не дає значення, відмінне від UTF-8. Ми також надаємо підмішати клас WorkaroundSpelling_management_page_charset працювати навколо дурного наполяганням Zope на верхньому регістрі правопису management_page_charset.
На даний момент, підтримуються наступні типи полів: Текст, TextLine, Б, BytesLine`, Bool, Int, Float і список з типу значення TextLine або BytesLine. Інші типи підніме NotImplementedError.
Модуль був реалізований використовувати dm.zope.generate. Альтернативний б здійснення об'єктів генерації на основі "zope.formlib" і використання так званих доповнень форм. Залежно від досвіду, я можу переключитися на цій альтернативи.
форма
Модуль визначає редагування за умовчанням (SchemaConfiguredEditForm) і дисплей (SchemaConfiguredDisplayForm) форми для dm.zope.schema.schema.SchemaConfigured.
Це залежить від zope.formlib.
віджет
Забезпечує відображення і редагування віджети для Timedelta полів, гідний дисплей віджет для поля Пароль (відображаються за замовчуванням паролі у відкритому вигляді в) і вхідного пристрою введення пароля, який не змусить вас надати значення пароля кожного разу після зміни форми.
Це залежить від zope.app.form в старих версіях Zope і zope.formlib в нові.
z2
Це підпакету поєднує в собі схеми, пов'язані і Zope функціональність 2. У нових версіях Zope, це залежить від five.formlib.
форма
Модуль визначає редагування за умовчанням (SchemaConfiguredEditForm) і дисплей (SchemaConfiguredDisplayForm) форми для dm.zope.schema.schema.SchemaConfigured для використання в Zope 2.
Це залежить від zope.formlib.
конструктор
Цей модуль містить SchemaConfiguredAddForm формі додавання класу і завод add_form_factory для генерації формі додавання (так званий "конструктор" на от ЗОУП 2) для класів на основі dm.zope.schema.schema.SchemaConfigured. Генерується додатковий форма, як правило, використовується як частина параметра конструктори RegisterClass.
add_form_factory має наступні параметри:
І NBSP; опис ім'я за замовчуванням
І NBSP; class_ клас для генерації форму для
І NBSP; назва Створити екземпляр class_ назву проявляється у вигляді
І NBSP; опис класу _.__ doc__ документацію, показану у вигляді
І NBSP; form_class форми SchemaConfiguredAddForm класу, який буде використовуватися
add_form_factory генерує форму zope.formlib з полів, визначених у реалізованих схем dm.zope.schema.schema.SchemaConfigured класу class_.
Цей модуль схожий на dm.zope.generate.constructor. Тим не менш, це працює для класів на основі SchemaConfigured в той час як остання підтримує класи, засновані PropertyManager.
шаблон
Забезпечує перегляд сторінки шаблону form_template можливість переглядати і редагувати Zope 2 схеми сконфигурированних об'єктів контенту в стандартному інтерфейсі ZMI.
Приклади
Установка: Це визначає дві схеми S1 і S2, інтерфейс введення і клас C, що випливають з SchemaConfigured реалізації схеми і інтерфейс.
>>> Від zope.interface інтерфейс імпорту, інвентар, providedBy
>>> Від zope.schema Int імпорту
>>>
>>> Від імпорту dm.zope.schema.schema SchemaConfigured
>>> Від dm.zope.schema.verify імпорту verify_schema
>>>
>>> Класу S1 (Interface): i1 = Int (за замовчуванням = 0)
...
>>> Класу S2 (інтерфейс): i2 = Int (за замовчуванням = 1)
...
>>> Клас I (Interface):
... Def () метод: прохід
...
>>> Класу C (SchemaConfigured):
... Інвентар (S1, S2, I)
... Def метод (само): пропуск
...
Приклади C мають атрибути, відповідні поля схеми. Якщо аргументи не дані для конструктора, вони отримують полів за замовчуванням в якості значення. Надані (ключове слово!) Аргументи перевизначити значення за замовчуванням.
>>> С = С ()
>>> C.i1
0
>>> C.i2
1
>>> C = C (i1 = 5)
>>> C.i1
5
Конструктор відкидає аргументи ключових слів, не визначені в схемі для того, щоб швидко виявляти орфографічні помилки. Тим не менш, це ускладнює використання супер в ієрархії класів для методу init ,. Можливо, майбутні версії будуть надавати кошти для управління цієї перевірки.
>>> С = С (х = 5)
Traceback (останній виклик останнього):
І NBSP; ...
Помилка типу: не аргумент ключове слово схеми: X
Якщо значення полів є доцільними, випадки C забезпечують схеми (як перевіряється verify_schema). В іншому випадку, verify_schema викличе виняток. Цей приклад демонструє також елементарне використання verify_schema.
>>> Verify_schema (S1, C)
НЕ >>> c.i1 = Немає
>>> Verify_schema (S1, C)
Traceback (останній виклик останнього):
І NBSP; ...
zope.schema.interfaces.WrongContainedType: [('i1', RequiredMissing ())]
Ми можемо створити редагувати (або дисплей) форму для наших об'єктів. Поля форми створюються автоматично для наших полів схеми. Класи форм є метод customize_fields ви можете перевизначити, щоб забезпечити власні поля та / або віджети.
Аналогічна функціональність доступна для Zope 2 в z2 підпакету.
>>> Від zope.publisher.browser TestRequest імпорту
>>> Від dm.zope.schema.form SchemaConfiguredEditForm імпорту
>>>
>>> Форма = SchemaConfiguredEditForm (с, TestRequest ())
>>> Ліст ([F .__ name__ для F в form.form_fields])
['I1', 'i2']

Що нового У цьому випуску:

  • Форма для
  • Zope 2 конструктор підтримка

Вимоги

  • Python

Інші програми розробника Dieter Maurer

dm.zdoc
dm.zdoc

14 Apr 15

dm.zope.schema

Коментар не знайдено
додати коментар
Включіть картинки!