Рекомендуемый подход для обозначения типа контента ловкости с новым интерфейсом

Во время работы над проектом, основанным на ловкости, мне был нужен один из моих типов контента для поддержки 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 ответа

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

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

После этого вы можете добавить 'colle.quickupload.browser.interfaces.IQuickUploadCapable' в свой список поведения в FTI.

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

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

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

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

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

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

И это все!

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

Другие вопросы по тегам