Вы регистрируете свой питон как Views для объекта содержимого:
<browser:page
for="**INTERFACE**"
name="**name**"
class="**class**"
attribute="**method**"
permission="zope2.View"
/>
Где INTERFACE - это интерфейс объекта, вид которого вы хотите видеть, name - это имя представления (т. Е. http://path-to-object/@@name
), class - это класс Python, в котором определен ваш скрипт, а attribute - необязательный метод класса (по умолчанию __ вызов __ ).Строго говоря, я думаю, что class - это любой вызываемый объект, не обязательно метод класса.
Это скрипт, который я использую для действия kss (почти то же самое, что и написание собственного AJAX).сценарии) - вашему классу может потребоваться наследование от BrowserView (PloneKSSView - это специализация для представлений KSS):
<browser:page
for="Products.VirtualDataCentre.interfaces.IDDCode"
name="getTableColumns"
class="Products.VirtualDataCentre.browser.DDActions.DDActions"
attribute="getTableColumns"
permission="zope2.View"
/>
, где IDDCode - это тип контента, для которого мне нужно представлениеи DDActions.py имеет:
from Products.Five import BrowserView
from plone.app.kss.plonekssview import PloneKSSView
class DDActions(PloneKSSView):
def getTableColumns(self, table, currValue, currLabel):
columns = self.context.getColumnNames(table)
for (field, curr) in [('valueColumn', currValue), ('labelColumn',currLabel)]:
self.replaceSelect(field, columns, (curr or self.context[field]))