ng.schema
2007-11-10 16:06Этот продукт содержит разработанные нами поля и виджеты для них. Может быть какие-то из них окажутся полезны для вас.
Продукт
| Название: | |
| ng.schema | |
| Выложен на PyPI | |
| Репозиторий |
Описание продукта ng.schema
Продукт ng.schema предоставляет поля схем интерфейсов и виджеты для них.
interfaceswitcher
Модуль предоставляет два поля, которые могут быть использованы для динамического назначения интерфейсов:
- InterfaceChoice
- Назначение одного интерефейса из списка;
- InterfaceSet
- Назначение нескольких интерфейсов из списка.
Интерфейсы выбираются из числа субинтерфейсов интерфейса, передаваемого полю в качестве параметра.
Пример использования:
from ng.schema.interfaceswitcher.interfacechoicefield import InterfaceChoice
from ng.schema.interfaceswitcher.interfacesetfield import InterfaceSet
class IA(Interface) :
pass
class IA1(IA) :
pass
class IA2(IA) :
pass
class IOb(Interface) :
ifc = InterfaceChoice(
title=u'Interface of IA',
interface = IA,
)
ifs = InterfaceSet(
title=u'Interface of IA',
interface = IA,
with_title=True
)
В приведенном примере аргумент interface используется, чтобы передать базовый интерфейс для коллекции переключаемых интерфейсов, а флаг with_title управляет способом формирования словаря интерфейсов: истинное значение вызовет формирование словаря с названиями элементов, взятыми из строки документации (__doc__) в интерфейсе, в противном случае название формируется точечным синтаксисом пути к интерфейсу.
regexp
Модуль предоставляет поля, выполняющие проверку текста регулярным выражением и его преобразование правилами переписывания. Каждое правило переписывания состоит из регулярного выражения, собирающим словарь из фрагментов текста, и строки формата, использумой, чтобы распечатать словарь.
Пример использования:
from ng.schema.regexp.regexpfield import Regexp
class IOb(Interface) :
title = Regexp(title = u'Title',
description = u'Title',
default = u'',
required = True,
regexp = (
(False, u"^.*/.*$", u"Title do not content symbol '/'"),
),
rewrite = (
(u"^\s*(?P<name>\w+)\s*-\s*(?P<number>[0-9]+)\s*$", u"%(name)s-%(number)s"),
(u"^\s*(?P<name>[^\s])\s*$", u"%(name)s"),
)
)
Поле, определенное в этом примере, позволяет ввести строку, не содержащую символ "/", и вырезает из нее пробелы вокруг тире между названием и номером, затем концевые пробелы.
floatdaytime
Поле позволяет представить атрибут, содержащий число с плавающей запятой, в форме строки времени в формате "HH:MM:SS".
Пример использования:
from ng.schema.floatdaytime.floatdaytime import FloatDayTime
class IOb(Interface) :
time = FloatDayTime(
title = u"Time",
description = u"Time of day",
required = False,
min=u'00:00',
max=u'24:00',
default=u'00:00'
)
principalidwidget
Виджет позволяет автоматически заполнять текстовое поле идентификатором пользователя, сохраняющего ее на сервере. Поле отображается как нередактируемое и заполненое именем пользователя. Имя и идентификатор пользователя берутся из атрибутов запроса.
Пример использования:
<addform
label="Add Article"
name="AddArticle.html"
schema="ng.content.article.interfaces.IDocShortLogo"
content_factory="ng.content.article.article.article.Article"
class=".nexturl.NextUrl"
permission="zope.ManageContent"
layer="...interfaces.GreenpsySkin"
set_before_add="title"
>
<widget
field="author"
class="ng.schema.principalidwidget.principalidwidget.PrincipalIdWidget" />
</addform>
dropdowndatewidget
Виджет позволяет вводить дату выбором значения из трех выпадающих списков для дня, месяца и года.
Пример использования:
<editform
schema="..interfaces.IProfileAnnotation"
for="..interfaces.IProfileAnnotation"
label="Profile"
name="profileannotation.html"
permission="zope.ManageContent"
menu="zmi_views" title="ProfileAnnotation"
>
<widget field="birthday" class="ng.schema.dropdowndatewidget.dropdowndatewidget.DropDownDateWidget" />
</editform>


