Вы регистрируете свой python как Views в объекте контента:
<browser:page
for="**INTERFACE**"
name="**name**"
class="**class**"
attribute="**method**"
permission="zope2.View"
/>
Где ИНТЕРФЕЙС — это интерфейс объекта, для которого вы хотите иметь представление, имя — это имя представления (т. е. http://path-to-object/@@name
), класс — это класс Python, в котором определен ваш скрипт, а attribute – необязательный метод класса (по умолчанию он __call__). Строго говоря, я думаю, что класс — это любой вызываемый объект, а не обязательно метод класса.
Это сценарий, который я использую для действия 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]))
person
Auspex
schedule
01.06.2011