Рекомендуемый подход для обозначения типа контента ловкости с новым интерфейсом - PullRequest
5 голосов
/ 18 октября 2011

Во время работы над проектом, основанным на ловкости, мне был нужен один из моих типов контента для поддержки colle.quickupload, пометив его интерфейсом IQuickUploadCapable.

В настоящее время я добавляю «инструменты» в мой файл configure.zcml:

`<class class="plone.dexterity.content.Container">      
     <implements interface="collective.quickupload.browser.interfaces.IQuickUploadCapable" />
 </class>`

Так как мой тип контента - это Контейнер, это работает, однако первым делом я хотел использовать подход в стиле грока вместо объявления его в ZCML. Что за способ «ловкий / ловкий» говорит моему типу контента «Ловкость», что он реализует дополнительный интерфейс, или я должен придерживаться текущего подхода?

Также я попытался добавить интерфейс в качестве поведения в моем файле profiles/default/types/my.dexterity.content.xml, но это не сработало (я не ожидал, что поведение будет служить другой цели).

Ответы [ 3 ]

4 голосов
/ 19 октября 2011

Хороший ответ Шона.Другой способ - создать поведение и применить его.Вам нужно зарегистрировать поведение с помощью:

<plone:behavior
    title="Quickupload"
    provides="collective.quickupload.browser.interfaces.IQuickUploadCapable"
    />

Затем вы можете добавить 'colle.quickupload.browser.interfaces.IQuickUploadCapable' в свой список поведения в FTI.это не хорошо, потому что это означает, что все типы ловкости, основанные на контейнерах, получают интерфейс маркера, а не только ваш тип.

2 голосов
/ 19 октября 2011

Почему бы просто не создать подкласс IQuickUploadCapable в качестве mixin после form.Schema в вашем интерфейсе типов?

1 голос
/ 18 октября 2011

Вы не можете использовать его как поведение, потому что он не претендует на то, чтобы его использовали таким образом.

Как я читал из pypi , предназначено для использования в портлете или в окне просмотра.

Чтобы добавить его в стиле Грока, вы должны:

from collective.quickupload.browser.interfaces import IQuickUploadCapable
from plone.directives import form
class IMyContent(form.schema):
    grok.implements(IQuickUploadCapable)

И это все!

Убедитесь, что ваш тип контента позволяет добавлять файлы внутри него, поэтому он является и папочным, и позволяет добавлять файлы (или он просто не ограничивается каким-либо конкретным типом контента).

...