2

いくつかの古い製品を4.xコードベースに更新しています。

これは古いInstall.pyの一般的なパターンです。

def install(self):
    out=StringIO()

    # Install CSS, JS and other GenericProfile stuff
    setup_tool = getToolByName(self, 'portal_setup')
    original_context = setup_tool.getImportContextID()
    setup_tool.setImportContext('profile-Products.NoneMultiSelectionWidget:default')
    setup_tool.runAllImportSteps()

ただし、setup_tool.setImportContext()メソッドは存在しなくなりました。正しい置換コードは何ですか?置換コードが必要ですか、それともGenericSetup XMLファイルが自動的に取得されますか?

トレースバック:

  - __traceback_info__: ('Products.NoneMultiSelectionWidget',)
     File "/Users/moo/code/buildout-cache/eggs/Products.ExternalMethod-2.13.0-py2.6.egg/Products/ExternalMethod/ExternalMethod.py", line 234, in __call__
       return f(*args, **kw)
      - __traceback_info__: ((<PloneSite at /plone>,), {}, None)
     File "/Users/moo/code/x/src/x/Products.NoneMultiSelectionWidget/Products/NoneMultiSelectionWidget/Extensions/Install.py", line 19, in install
       setup_tool.setImportContext('profile-Products.NoneMultiSelectionWidget:default')
   AttributeError: setImportContext
4

1 に答える 1

3

setImportContextはPlone3ですでに非推奨になっていると思いますが、それについてはよくわかりません。とにかく、インポートコンテキストはもう明示的に設定されるべきではないので、これの代わりに:

setup_tool = getToolByName(self, 'portal_setup')
original_context = setup_tool.getImportContextID()
setup_tool.setImportContext('profilename')
setup_tool.runAllImportSteps()
# ... restore original context ...

今では単にこれです:

setup_tool = getToolByName(self, 'portal_setup')
setup_tool.runAllImportStepsFromProfile('profilename')

また、パッケージにGSプロファイルが1つしかない限り、プロファイルは自動的に取得されるため、このExtensions/install.pyコードはまったく必要ありません。

于 2012-04-23T15:04:57.573 に答える