Использование Collective.z3cform.datagridfield с Dexterity

Я новичок в Plone и пытаюсь использовать DataGridField с ловкостью. Цель состоит в том, чтобы использовать Plone 4.1 для публикации результатов исследования удобства использования в нашей интрасети. Я создал настраиваемый тип документа (называемый взаимодействием), и я хочу использовать сетку данных для одного из полей для моделирования таблицы, содержащей два столбца, показывающих сводку результатов.

В соответствии с инструкциями, приведенными на коллективном.z3cform.datagridfield Я успешно добавил яйцо коллективного.z3cform.datagrid в список яиц в моем сборке, и я вижу, что появляется новое дополнение как Активный в моем списке дополнений для моего сайта. Я создал простой модуль Python схемы, который описывает документ, показывающий результаты исследования удобства использования, которое я документирую:

from five import grok
from zope import schema
from zope import interface

from plone.directives import form

from plonetheme.mytheme import InteractionMessageFactory as _

from plone.app.textfield import RichText

from z3c.form import field, button
from Products.CMFCore.interfaces import IFolderish

from collective.z3cform.datagridfield import DataGridFieldFactory, DictRow

class IFinding(interface.Interface):
    summary = schema.TextLine(title=_(u"Summary"))
    percentage = schema.TextLine(title=_(u"Percentage"))

class IInteraction(form.Schema):

    findings = schema.List(
        title=_(u"Overview of findings"),
        required=False,
        value_type=DictRow(
            title=_(u"Finding"),
            schema=IFinding
            )
        )

class EditForm(form.EditForm):
    grok.context(IInteraction)
    grok.require('zope2.View')
    fields = field.Fields(IInteraction)

    fields['findings'].widgetFactory = DataGridFieldFactory

Я зарегистрировал свой новый тип контента «Взаимодействие», добавив строку в файл profiles / default / types.xml:



Controls the available content types in your portal



Для полноты картины я также включил соответствующий файл profiles / default / types / Interaction.xml:



 Interaction
 An item in the interactions dictionary
 string:${portal_url}/document_icon.png
 interaction
 
 view
 True
 True
 
 False
 view
 
  
 
 False
 cmf.AddPortalContent
 plone.dexterity.content.Item
 
  
  
  
 
 plonetheme.mytheme.interaction.IInteraction

 
 
 
 
 
 
  
 
 
  
 

Когда я перехожу к форме добавления для своего настраиваемого типа взаимодействия, я получаю стандартный виджет добавления / удаления элемента списка ловкости. а не виджет таблицы datagrid, который я видел в примерах Collective.z3cform.datagrid_demo. Когда я пытаюсь сохранить настраиваемый тип, виджет списка ловкости отображает ошибку проверки: «Система не может обработать данное значение.'

Есть ли еще какой-нибудь код, который мне нужно добавить? Нужно ли переопределить шаблоны представления Dexterity Add / EditForm?

7
задан Martijn Pieters 28 June 2012 в 11:52
поделиться