Как переопределить значение поля по умолчанию в поведении ловкости в Plone? - PullRequest
5 голосов
/ 12 июля 2011

У нас есть требование, чтобы тип содержимого ловкости был исключен из поведения навигации, но для значения поля по умолчанию exclude_from_nav должно быть True.В поведении plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation по умолчанию False.

Очевидно, я мог создать свое собственное поведение, которое копирует IExcludeFromNavigation, за исключением значения по умолчанию, но мне было интересно, есть ли способ сделать это на основеповторное использование IExcludeFromNavigation.У нас есть другие типы контента, которые используют IExcludeFromNavigation, где мы хотим установить значение по умолчанию False.

Мы используем Plone 4.1rc3 и Dexterity 1.0

Ответы [ 2 ]

5 голосов
/ 12 июля 2011

См. http://plone.org/products/dexterity/documentation/manual/developer-manual/advanced/defaults и http://pypi.python.org/pypi/plone.directives.form#value-adapters,, но в основном:

@form.default_value(field=IExcludeFromNavigation['exclude_from_nav'], context=IMyType)
def excludeFromNavDefaultValue(data):
    return True

Приветствия, Мартин

3 голосов
/ 12 июля 2011

У меня это работает с использованием plone.directives.form декоратора.

Я добавил это в один из моих модулей поведения.

from plone.directives.form import default_value

@default_value(field = IExcludeFromNavigation['exclude_from_nav'])
def excludeFromNavDefaultValue(data):
    return data.request.URL.endswith('++add++my_item_type')

У меня также есть следующее в configure.zcml

<include package="plone.directives.form" file="meta.zcml" />
<include package="plone.directives.form" />

<grok:grok package="." />

Спасибо Мартину за большую подсказку, хотя его ответ не совсем решил мою проблему. Для меня это похоже на хак - более элегантное решение было бы неплохо.

...