在基于z3c.form的表单updateWidgets()上引发的ComponentLookupError

时间:2016-04-27 18:34:20

标签: plone plone-4.x z3c.form

我在从<includeDependencies package="." />文件中删除configure.zcml指令后运行测试时出现此问题:

Error in test test_get_load_action (sc.embedder.tests.test_content.MultimediaTestCase)
Traceback (most recent call last):
  File "/home/hvelarde/collective/buildout.python/parts/opt/lib/python2.7/unittest/case.py", line 329, in run
    testMethod()
  File "/home/hvelarde/collective/sc.embedder/src/sc/embedder/tests/test_content.py", line 135, in test_get_load_action
    edit_form.update()
  File "/home/hvelarde/.buildout/eggs/plone.dexterity-1.1.2-py2.7.egg/plone/dexterity/browser/edit.py", line 52, in update
    super(DefaultEditForm, self).update()
  File "/home/hvelarde/.buildout/eggs/plone.z3cform-0.7.8-py2.7.egg/plone/z3cform/fieldsets/extensible.py", line 59, in update
    super(ExtensibleForm, self).update()
  File "/home/hvelarde/.buildout/eggs/plone.z3cform-0.7.8-py2.7.egg/plone/z3cform/patch.py", line 30, in GroupForm_update
    _original_GroupForm_update(self)
  File "/home/hvelarde/.buildout/eggs/z3c.form-2.5.1-py2.7.egg/z3c/form/group.py", line 125, in update
    self.updateWidgets()
  File "/home/hvelarde/.buildout/eggs/z3c.form-2.5.1-py2.7.egg/z3c/form/form.py", line 129, in updateWidgets
    (self, self.request, self.getContent()), interfaces.IWidgets)
  File "/home/hvelarde/.buildout/eggs/zope.component-3.9.5-py2.7.egg/zope/component/_api.py", line 109, in getMultiAdapter
    raise ComponentLookupError(objects, interface, name)
ComponentLookupError: ((<Products.Five.metaclass.EditForm object at 0x7f5262a3f490>, <HTTPRequest, URL=http://nohost>, <Embedder at /plone/test-folder/multimedia>), <InterfaceClass z3c.form.interfaces.IWidgets>, u'')

以前工作的相同版本;当前configure.zcml现在包括以下内容:

<include package="Products.CMFCore" file="permissions.zcml" />
<include package="plone.app.dexterity" />
<include package="plone.app.dexterity" file="meta.zcml" />
<include package="five.grok" />

According to the documentation由于迁移不良,这是一个已知问题,但事实并非如此。

我在Plone 4.2.6下测试。相同的代码工作和测试在Plone 4.3下传递为you can see in the CI builds

1 个答案:

答案 0 :(得分:1)

似乎我在configure.zcml声明中缺少一个包;现在它看起来像这样:

<include package="Products.CMFCore" file="permissions.zcml" />
<include package="plone.app.dexterity" />
<include package="plone.app.dexterity" file="meta.zcml" />
<include package="collective.dexteritytextindexer" />

现在正在运作:https://travis-ci.org/simplesconsultoria/sc.embedder/builds/126432050