Получение интерфейса слоя браузера Zope 3, зная только его имя

Зарегистрировать интерфейс скина Plone следующим образом:

  <interface
      interface=".interfaces.IThemeSpecific"
      type="zope.publisher.interfaces.browser.IBrowserSkinType"
      name="My Theme Name"
      />

Какой самый простой способ получить интерфейс (my.app.browser.interfaces.IThemeSpecific) зная имя ("My Theme Name")?

2 ответа

Решение

Вероятно, это:

>>> from zope.component import getUtility 
>>> from zope.publisher.interfaces.browser import IBrowserSkinType
>>> getUtility(IBrowserSkinType, name="Old Plone 3 Custom Theme")
<InterfaceClass plonetheme.classic.browser.interfaces.IThemeSpecific>

Если у вас есть buildout, где установлен этот скин, добавьте collective.recipe.omelette это поможет вам позже быть в состоянии grep на все ваши пакеты для него.

Так что-то вроде этого будет работать:

grep -R --include=*.zcml 'My Theme Name' parts/omelette
Другие вопросы по тегам