安装时如何检查我的产品是否已安装?

时间:2012-11-06 09:43:45

标签: plone

我想在导入步骤中执行部分代码,只有在产品本身尚未安装的情况下才会执行。

我尝试使用了quickinstaller-tool的'listInstalledProduct-method。

然而,这将返回所有已安装的产品,但不会返回我自己的产品。

如果我的产品已经安装在网站上,我如何检查?

2 个答案:

答案 0 :(得分:5)

在Anne Walther(a.k.a。'awello')的正确暗示下,我找到了解决方案:

from Products.CMFCore.utils import getToolByName
def myMethod(context):
    qi = getToolByName(context, 'portal_quickinstaller')

    prods = qi.listInstallableProducts(skipInstalled=False)

    for prod in prods:
        if (prod['id'] == 'your.productname') and (prod['status'] == 'new'):
        # further code...

无论出于何种原因,幸运的是,重新安装过程中产品的状态将返回“已卸载”,尚未安装的产品返回状态为“新”,最后已安装的网站产品大声呐喊并自豪: '安装'。

这样就可以区分重新安装和初始安装。

答案 1 :(得分:0)

在Plone 5中做同样的事情,我在以下位置管理了Ida Ebkes代码:

from plone import api

def myMethod(context):

    portal = api.portal.get()
    qi = api.portal.get_tool('portal_quickinstaller')
    prods = qi.listInstallableProducts(skipInstalled=False)

    IsProductNameInstalled = len([k for k in prods if k['id']=='your.productname' and k['status']=='new']) == 0 and True or None

    if IsProductNameInstalled:
        # further code...