gpt4 book ai didi

plone - 需要Plone 4更智能的通用设置更新

转载 作者:行者123 更新时间:2023-12-02 04:00:52 28 4
gpt4 key购买 nike

问题的核心是GenericSetup配置文件是可加的。有时,仅通过应用配置文件就无法升级产品,并且整个配置文件链需要按一定顺序应用。

例如,假设我们有很多独立的网站政策(仅应用了其中一项
到实例实例):S1,S2,...,SN。还有两个产品,例如A和B。例如,所有这些S1-SN,A和B都具有元数据依赖性,如下所示:Sn-> A-> B

假设它们处理Registry.xml并在此过程中覆盖了某些内容。 (来自typeinfo和其他一些配置文件步骤的情况也是如此)。如果产品A发生了某些更改(可能会在S1中被覆盖或不能被覆盖),我们就不能仅对A进行升级,因为当我们按下S1站点上的按钮时,其自身的策略覆盖将丢失。但是,仅因为A的更改而为所有S1-SN编写升级步骤是很重要的。

至少对于上述情况,是否有任何明智的升级方法,可以通过按一定顺序应用注册表更新(即B,A,Sn)解决整个问题。 (即使那样,也可能会有一些困难的情况)?

由于软件包A不了解S1(或S2或其他任何站点策略),因此一种解决方案是制作一些“ super 软件包”,使他们可以清楚地了解那些升级链。 但是,除了始终将结果概要文件放入策略之外,还有其他解决方案吗?

(为简单起见,请忘记可以通过网络进行一些更改)

最佳答案

尽管并不是所有产品不幸使用的东西,这实际上已经在GS中。
解决方案在于使用GS的upgradeStep

假设您将配置文件的元数据从版本1更改为2。在您的zcml中,您将注册一个升级步骤,如下所示:

  <genericsetup:upgradeStep
title="Upgrade myproduct from revision 1 to 2"
description=""
source="1"
destination="2"
handler="myproduct.one_to_two.upgrade"
sortkey="1"
profile="myproduct:default"
/>

one_to_two.py中,您将拥有
def upgrade(context):
registry = getUtility(IRegistry)
if 'foo' in registry:
do_stuff()

在其中,您还可以重新运行特定的导入步骤,例如:
context.runImportStepFromProfile('profile-myproduct:default','actions')

升级产品时,仅应用升级步骤处理程序中指定的内容,这正是您所需要的。

有关所有 here的文档。

关于plone - 需要Plone 4更智能的通用设置更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10570416/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com