2

flvタイプのビデオを表示するカスタム製品を使用して、Plone 3.3.6インスタンスで作業しています。このトラバーサル エラーのトラブルシューティングをどこから始めればよいかを考えています。これは 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 は古いバージョンの hach​​oir パッケージと互換性がありませんでした。インスタンスを適切に起動するには、少なくとも 1.2.1 パッケージが必要でした。ビルドアウト構成のバージョン セクションには、次のものが含まれるようになりました。

しかし、 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

私はこれについてどのように行ってきましたか:

  1. 一般に、トラブルシューティングのためにインスタンスをフォアグラウンド モードで起動すると非常に便利です (bin/instance fg)。
  2. http://good-py.appspot.comは、バージョンを固定するための絶対的な命の恩人です (plone.app.z3cform 0.4.3 を固定するオプションはありませんでしたが、0.4.9 は十分に近かったです。その結果、私はビルドアウトの [versions] セクションで 0.4.3 を明示的に固定する必要がありました。
4

1 に答える 1

0

私自身の質問に答えるために。

この問題は、アクセスしようとしていたビューに関連付けられたビューレットに関連していました。

ビューレットは、「assessment_input」というテンプレートでカスタム z3c.form を参照するため、トレースバックのこの部分は次のようになります。

- URL: assessment_input
- Line 12, Column 4

カスタム製品の browser/configure.zcml で問題のあるビューレットをコメントアウトして一時的に無効にすると、ビューが機能し始めたので (もちろんビューレットを表示せずに)、これは確かです。

z3c.form ベースのフォームが plone でレンダリングされる方法は、plone.z3cform のバージョン 0.5.8 以降で変更されました (これはここに文書化されています: https://dev.plone.org/ticket/10022 )、plone のバージョンで0.5.8 より前の .z3cform では、ビューレット テンプレートで「view/contents」を呼び出すことでフォームをレンダリングできました。トレースバックは、新しい plone.z3cform (「ビュー/コンテンツ」規則をサポートしていない) がエラーの原因であることを示しています。

    - 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')

この修正では、ビルドアウトで plone.z3cform のバージョンを 0.5.7 に固定する必要がありました

[versions]
plone.z3cform = 0.5.7

質問で述べたように、plone.app.z3cform 0.4.9 のバージョンを good-py known good set (KGS) を使用して固定しました。これは必要だと思いますが、完全にはテストしていません。

これは今のところ十分な解決策です。先に進むには、製品の新しいバージョン用にビューレットを書き直す必要があります。これにより、Plone 4.x にアップグレードしたときに、ビューレットが plone.z3cform の新しい、おそらくより優れた、レンダリングのアプローチをサポートするようになります。フォーム。

于 2012-07-13T11:32:21.890 に答える