Plone 3.3->;4迁移:缺少安装工具setImportContext()

Plone 3.3->;4迁移:缺少安装工具setImportContext(),plone,Plone,我正在将一些旧产品更新为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_

我正在将一些旧产品更新为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
-\uuuu回溯信息:('Products.nonemultiplectionwidget',)
文件“/Users/moo/code/buildout cache/eggs/Products.ExternalMethod-2.13.0-py2.6.egg/Products/ExternalMethod/ExternalMethod.py”,调用中第234行__
返回f(*参数,**kw)
-回溯信息:((,),{},无)
文件“/Users/moo/code/x/src/x/Products.nonemultivisionwidget/Products/nonemultivisionwidget/Extensions/Install.py”,安装中第19行
setup_tool.setImportContext('profile-Products.nonemultipselectionWidget:default'))
AttributeError:setImportContext

我认为setImportContext在Plone 3中已经被弃用了,但我不确定这一点。无论如何,不应再显式设置导入上下文,因此应改为:

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配置文件,您就根本不需要这个Extensions/install.py代码,因为配置文件将自动获取