使用应显示flv类型视频的自定义产品处理Plone 3.3.6实例。我正在尝试从哪里开始对此traversalerror进行故障排除。我确信这是在使用Plone 3.1.x(虽然我确实有很好的想象力)。
TraversalError: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents')
我在下面列出了追溯:
Traceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module zope.formlib.form, line 770, in __call__
Module zope.formlib.form, line 764, in render
Module Shared.DC.Scripts.Bindings, line 313, in __call__
Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
Module Products.PageTemplates.PageTemplateFile, line 129, in _exec
Module Products.CacheSetup.patch_cmf, line 77, in PT_pt_render
Module Products.CacheSetup.patch_utils, line 9, in call_pattern
Module Products.PageTemplates.PageTemplate, line 98, in pt_render
Module zope.pagetemplate.pagetemplate, line 117, in pt_render
- Warning: Macro expansion failed
- Warning: exceptions.AttributeError: @@tag_macros
Module zope.tal.talinterpreter, line 271, in __call__
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 891, in do_useMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 957, in do_defineSlot
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 861, in do_defineMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 957, in do_defineSlot
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 949, in do_defineSlot
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 861, in do_defineMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 855, in do_condition
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 534, in do_optTag_tal
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 745, in do_insertStructure_tal
Module Products.PageTemplates.Expressions, line 223, in evaluateStructure
Module zope.tales.tales, line 696, in evaluate
- URL: index
- Line 128, Column 8
- Expression: <StringExpr 'plone.belowcontentbody'>
- Names:
{'container': <ATFile at /sites/videoserver/plone/Members/johndoe/sample-video.flv>,
'context': <ATFile at /sites/videoserver/plone/Members/johndoe/sample-video.flv>,
'default': <object object at 0xb7f33528>,
'here': <ATFile at /sites/videoserver/plone/Members/johndoe/sample-video.flv>,
'loop': {},
'nothing': None,
'options': {'args': ()},
'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0xe3c866c>,
'request': <HTTPRequest, URL=http://videoserver/Members/johndoe/sample-video.flv/file_view>,
'root': <Application at >,
'template': <ImplicitAcquirerWrapper object at 0xe34dcec>,
'traverse_subpath': [],
'user': <PropertiedUser 'admin'>,
'view': <Products.Five.metaclass.SimpleViewClass from /data/Plone/buildout/eggs/p4a.video-1.3-py2.4.egg/p4a/video/browser/video.pt object at 0xe4ce36c>,
'views': <zope.app.pagetemplate.viewpagetemplatefile.ViewMapper object at 0xe2fa86c>}
Module Products.Five.browser.providerexpression, line 37, in __call__
Module plone.app.viewletmanager.manager, line 154, in render
Module plone.app.viewletmanager.manager, line 83, in render
Module plone.app.layout.viewlets.common, line 44, in render
Module alteroo.assesscontent.browser.viewlet, line 95, in index
Module Shared.DC.Scripts.Bindings, line 313, in __call__
Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
Module Products.PageTemplates.PageTemplateFile, line 129, in _exec
Module Products.CacheSetup.patch_cmf, line 77, in PT_pt_render
Module Products.CacheSetup.patch_utils, line 9, in call_pattern
Module Products.PageTemplates.PageTemplate, line 98, in pt_render
Module zope.pagetemplate.pagetemplate, line 117, in pt_render
Module zope.tal.talinterpreter, line 271, in __call__
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 855, in do_condition
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 534, in do_optTag_tal
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 745, in do_insertStructure_tal
Module Products.PageTemplates.Expressions, line 223, in evaluateStructure
Module zope.tales.tales, line 696, in evaluate
- URL: assessment_input
- Line 12, Column 4
- Expression: <PathExpr standard:'view/contents'>
- Names:
{'container': <ATFile at /sites/videoserver/plone/Members/johndoe/sample-video.flv>,
'context': <ATFile at /sites/videoserver/plone/Members/johndoe/sample-video.flv>,
'default': <object object at 0xb7f33528>,
'here': <ATFile at /sites/videoserver/plone/Members/johndoe/sample-video.flv>,
'loop': {},
'nothing': None,
'options': {'args': (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>,)},
'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0xe15590c>,
'request': <HTTPRequest, URL=http://videoserver/Members/johndoe/sample-video.flv/file_view>,
'root': <Application at >,
'template': <ImplicitAcquirerWrapper object at 0xe0dacec>,
'traverse_subpath': [],
'user': <PropertiedUser 'admin'>,
'view': <Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>,
'views': <zope.app.pagetemplate.viewpagetemplatefile.ViewMapper object at 0xe4bb78c>}
Module zope.tales.expressions, line 217, in __call__
Module Products.PageTemplates.Expressions, line 155, in _eval
Module zope.tales.expressions, line 124, in _eval
Module Products.PageTemplates.Expressions, line 105, in trustedBoboAwareZopeTraverse
Module zope.traversing.adapters, line 164, in traversePathElement
- __traceback_info__: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents')
Module zope.traversing.adapters, line 52, in traverse
- __traceback_info__: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents', [])
TraversalError: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents')
更多信息: 我将p4a.video固定到版本1.1,扩建版本为1.3。 p4a.video与旧版本的hachoir软件包不兼容,在我的实例正常启动之前,我至少需要1.2.1软件包。我的buildout配置的我的版本部分现在包含以下内容。
但它似乎与plone.app.z3cform相关
extends =
...
http://good-py.appspot.com/release/plone.app.z3cform/0.4.9?plone=3.3.6
[versions]
p4a.plonevideoembed = 1.1
p4a.video = 1.1
hachoir-core = 1.2.1
hachoir-metadata = 1.2.1
hachoir-parser = 1.2.1
我是怎么做到的:
答案 0 :(得分:0)
回答我自己的问题。
该问题与一个与我试图访问的视图相关联的Viewlet有关。
viewlet在名为'assessment_input'的模板中引用自定义z3c.form,因此这部分回溯:
- URL: assessment_input
- Line 12, Column 4
我确实知道这一点,因为当我通过在我的自定义产品的browser / configure.zcml中对其进行评论来暂时禁用违规的Viewlet时,视图开始起作用(当然没有显示Viewlet)。
基于z3c.form的表单在plone中呈现的方式在plone.z3cform及更高版本的0.5.8版本中更改了(这里记录为:https://dev.plone.org/ticket/10022),在0.5之前的plone.z3cform版本中.8,过去可以通过在viewlet模板中调用“view / contents”来呈现表单。回溯意味着较新的plone.z3cform(不支持“view / contents”约定)导致错误。
- Expression: <PathExpr standard:'view/contents'>
<snip> ...
- __traceback_info__: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents', [])
TraversalError: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents')
修复要求我在我的buildout中将我的plone.z3cform版本固定为0.5.7
[versions]
plone.z3cform = 0.5.7
正如我在问题中提到的那样,使用一个良好的已知良好集(KGS)将plone.app.z3cform 0.4.9的版本固定,我认为这是必要的,但尚未对其进行绝对测试。
现在这是一个足够好的解决方案,继续前进我将需要为我的产品的更新版本重写我的viewlet,这样当我升级到Plone 4.x时,viewlet支持plone.z3cform的渲染形式的更新,可以说是更好的方法。