2008-07-01

Новости Вышел ng.site.content 1.1.1 Рефакторинг ng.app.rubricator

Вышел ng.lib 0.0.5

Степан Ломов  2008-07-01 13:12

В результате краткого обсуждение с Анатолием Бубенковым удалось предложить удобный способ использования в полях схем вычисляемых умолчаний, что достигается с помощью специальной фабрики полей DynamicDefault. Теперь поле, например, DateTime удобно определять так:

 DynamicDefault(DateTime,title=u'date',default=now)

Функция now() будет вызвана в момент отрисовки поля.

Эта удобная возможность предоставляется продуктом ng.lib, начиная с версии 0.0.5.

Обычно, значения по умолчанию в схемах определяются так:

from zope.interface import Interface
from zope.schema import Datetime

class IA(Interface) :
    """ Stupid Interface """

    created = DateTime(title = u'Date/Time',
        description = u'Date/Time',
        default = datetime.datetime.today(),
        required = True)

В этом случае значение по умолчанию вычисляется в момент старта сервера, и в дальнейшем остается неизменным. Существуют разные обходные способы решить это, например убрать поле из формы создания объекта и устанавливать значение в конструкторе класса.

Но с появлением фабрики DynamicDefault все значительно упростилось:

from zope.interface import Interface
from zope.schema import Datetime
from ng.lib.dynamicdefault.DynamicDefault

class IA(Interface) :
    """ Stupid Interface """

    created = DynamicDefault(DateTime,
        title = u'Date/Time',
        description = u'Date/Time',
        default = datetime.datetime.today,
        required = True)

При такой нотации, в качестве значения поля default передается функция, которая будет вызвана в момент отрисовки формы добавления и в ее поле появится текущее время, что значительно более полезно.

Аналогично, фабрика DynamicDefault может использоваться и для других полей, например, чтобы определить автора статьи или другие динамические параметры.

Продукт ng.lib содержит много других полезных решений, читайте документацию.

Эпицентр Zope3 Учат тут Нейросети Репозиторий Статистика Редакторам Проекты
Подписаться на RSS Feed Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml