Plone3+Poi

Plone3でPoiがどうしても動かせなかった記録。PoiっていうのはZope/Ploneのissue trackerプロダクト。Poiに加えて

  • AddRemoveWidget
  • DataGridField(Plone3対応は1.6以上)

が必要。Ploneの最新版(3.0.6)とあわせてインストールし、Plone Siteを作成、new issueを追加しようとすると、こんなエラーが。長いけど全文引用します。

    *  Module ZPublisher.Publish, line 119, in publish
    * Module ZPublisher.mapply, line 88, in mapply
    * Module ZPublisher.Publish, line 42, in call_object
    * Module Products.CMFPlone.FactoryTool, line 376, in __call__
    * Module ZPublisher.mapply, line 88, in mapply
    * Module ZPublisher.Publish, line 42, in call_object
    * Module Products.CMFFormController.FSControllerPageTemplate, line 90, in __call__
    * Module Products.CMFFormController.BaseControllerPageTemplate, line 31, in _call
    * Module Shared.DC.Scripts.Bindings, line 313, in __call__
    * Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
    * Module Products.CMFCore.FSPageTemplate, line 216, in _exec
    * Module Products.CMFCore.FSPageTemplate, line 155, in pt_render
    * Module Products.PageTemplates.PageTemplate, line 89, in pt_render
    * Module zope.pagetemplate.pagetemplate, line 117, in pt_render
      Warning: Macro expansion failed
      Warning: exceptions.KeyError: 'macro'
    * Module zope.tal.talinterpreter, line 271, in __call__
    * 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 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 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 949, 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 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 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 891, in do_useMacro
    * 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 949, 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 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 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 824, in do_loop_tal
    * Module zope.tal.talinterpreter, line 346, in interpret
    * Module zope.tal.talinterpreter, line 536, in do_optTag_tal
    * Module zope.tal.talinterpreter, line 525, in do_optTag
    * Module zope.tal.talinterpreter, line 346, in interpret
    * Module zope.tal.talinterpreter, line 824, in do_loop_tal
    * 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 870, in do_useMacro
    * Module zope.tales.tales, line 696, in evaluate
      URL: file:/usr/local/zope/project/Products/CMFEditions/skins/CMFEditions/edit_macros.pt
      Line 43, Column 22
      Expression: <PythonExpr here.widget(field.getName(), mode='edit')>
      Names:

      {'container': <PloneSite at /poi>,
       'context': <PoiTracker at /poi/portal_factory/PoiTracker/poitracker.2008-02-26.6498842052 used for /poi>,
       'default': <object object at 0xbf584528>,
       'here': <PoiTracker at /poi/portal_factory/PoiTracker/poitracker.2008-02-26.6498842052 used for /poi>,
       'loop': {u'field': <Products.PageTemplates.Expressions.PathIterator object at 0xb9a9180c>,
                u'fieldset': <Products.PageTemplates.Expressions.PathIterator object at 0xb9a91e8c>},
       'nothing': None,
       'options': {'args': (),
                   'state': <Products.CMFFormController.ControllerState.ControllerState object at 0xb9b9a5ec>},
       'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0xb9f4280c>,
       'request': <HTTPRequest, URL=http://XXX.XXX.XXX.XXX:8080/poi/portal_factory/PoiTracker/poitracker.2008-02-26.6498842052/base_edit>,
       'root': <Application at >,
       'template': <FSControllerPageTemplate at /poi/base_edit used for /poi/portal_factory/PoiTracker/poitracker.2008-02-26.6498842052>,
       'traverse_subpath': [],
       'user': <PropertiedUser 'admin'>}

    * Module Products.PageTemplates.ZRPythonExpr, line 49, in __call__
      __traceback_info__: here.widget(field.getName(), mode='edit')
    * Module PythonExpr, line 1, in <expression>
    * Module Products.Archetypes.BaseObject, line 287, in widget
    * Module Products.Archetypes.Renderer, line 24, in render
    * Module Products.Archetypes.generator.widget, line 147, in __call__

AttributeError: Macro datagridwidget does not exist for <PoiTracker at poitracker.2008-02-26.6498842052>

"datagridwidget"っていうマクロが見えないと。でもこのマクロはインストールしたDataGridFiledのDataGridWidget.pyにちゃんと定義があります。

    _properties.update({
        'macro' : "datagridwidget",
        'helper_css': ('datagridwidget.css',),
        'helper_js': ('datagridwidget.js',),
        'show_header' : True,
        'auto_insert': False,
        'columns' : {}, # Sequence of Column instances

        })

なんで見えないんだかわからない。。