为Zope提供舒适地激活/停用符合CMF规范的外部插件的功能。
项目描述
Products.CMFQuickInstallerTool
功能
CMFQuickInstallerTool 是一个在 Zope/CMF 站点内部舒适地激活/停用 CMF 兼容产品的工具。
因此,它必须作为一个工具安装到 CMF 门户中,在那里它存储有关已安装产品的信息。
使用 QuickInstallerTool 安装产品的要求相当简单(几乎所有现有的 CMF 产品都满足这些要求)
产品必须在其 Extensions 目录中的 Python 模块 Install.py 中实现一个外部方法 install(旧式)。
或者
附加组件/产品附带了 GenericSetup 扩展配置文件(但没有如上所示的安装方法)。如果有多个配置文件,则按字母顺序第一个获胜。
产品可以卸载,QuickInstallerTool 会删除产品在安装过程中创建的以下项目
门户操作,
门户皮肤,
门户类型,
门户对象(在门户根目录中创建的对象),
工作流,
左插槽和右插槽(也仅针对门户进行检查),
资源注册条目
使用方法
在 ZMI 中单击 portal_quickinstaller。管理屏幕允许您选择要安装和卸载的产品。您可以浏览已安装的产品并查看已创建的内容和安装过程的日志。
自定义卸载
为了使用自定义卸载,必须满足以下要求
产品必须在 Extensions 目录中的 Python 模块 Install.py 中实现一个外部方法 uninstall。请注意,自定义卸载方法是在(并且在)标准对象移除之前调用的。
或者
附加组件/产品必须附带一个以 uninstall 结尾的 GenericSetup 扩展配置文件。如果没有外部方法 uninstall,则将在卸载时运行该文件。
安装
install(portal) 或 install(portal, reinstall)
卸载
uninstall(portal) 或 uninstall(portal, reinstall)
重新安装
重新安装产品会调用 uninstall() 和 install()。如果您有在重新安装时应该与卸载/安装不同的特殊代码,您可以在 install 或 uninstall 方法中添加一个名为 'reinstall' 的第二个参数,该参数仅在重新安装时为 true。在大多数情况下,您在重新安装时不应有不同反应!
更改日志
4.0.4 (2021-03-02)
错误修复
需要“管理门户”权限才能访问工具或已安装的产品。对于大多数方法,这已经是这样了,但您可以从对象本身获取一些信息。[maurits] (#24)
4.0.3 (2020-04-23)
错误修复
包装更新。(#1)
4.0.2 (2020-03-09)
错误修复
修复失败的测试。[tschorr] (#23)
4.0.1 (2019-06-19)
错误修复
修复从 Plone 4.3 迁移到 5.2 期间的问题。[pbauer] (#22)
4.0.0 (2018-11-05)
破坏性更改
添加了 CMFPlone 的功能和测试。添加了卸载配置文件。不再依赖于由 CMFPlone 安装,特别是在测试中。标记为 Plone 5.2 的最低版本。此包已停用。您应使用 GenericSetup 配置文件代替。[maurits] (#18)
错误修复
Python 2 / 3 兼容性。[ale-rt, jensens, pbauer] (#20)
3.0.16 (2018-01-30)
错误修复
添加 Python 2 / 3 兼容性。[maurits]
添加未声明的 Products.ExternalMethod 依赖项。[esteele]
3.0.15 (2017-02-12)
错误修复
修复由于 Zope4 中删除了 Globals 而导致的导入问题。[pbauer]
3.0.14 (2016-10-03)
错误修复
在 QI ZMI 表单中添加了指向附加组件控制面板的链接。并指出该表单本身已弃用。[maurits]
应用 20160830 的安全热修复 installProducts 重定向。此外,我们要求 POST 请求。[maurits]
3.0.13 (2016-01-08)
新增
使用 Products.GenericSetup 1.8.1 的 unsetLastVersionForProfile。[maurits]
3.0.12 (2015-09-21)
在卸载产品时,将其安装配置标记为未知,这样portal_setup也会将其视为未安装。[maurits]
3.0.11 (2015-08-22)
修复了注册IPloneSiteRoot配置文件而不是CMFCore ISiteRoot的问题。该错误从3.0.10版本中引入。例如,请参阅https://github.com/plone/plone.app.mosaic/issues/124 [maurits]
3.0.10 (2015-07-29)
清理:PEP8,安全+zca的装饰器等。[jensens]
3.0.9 (2015-06-15)
如果未找到其他卸载方法,则在卸载时始终运行一个配置文件‘uninstall’。修复了https://github.com/plone/Products.CMFQuickInstallerTool/issues/4 [pbauer]
重新添加了在移植到plone.app.testing后未运行的doctests。[tomgross]
3.0.8 (2015-03-21)
不再阻止INonInstallable配置文件被记录为已安装产品。(实际上,它们是自动安装的产品,而不是不可安装的产品。)[davisagli]
3.0.7 (2014-10-24)
允许将跳过某些步骤的选项传递给GenericSetup的runAllImportStepsFromProfile。[pbauer]
切换到使用易失性属性来检测错误,这样我们就不需要在读取时写入ZODB。[vangheem]
修复了一个错误,即列出可安装产品总是会生成事务负载。[malthe]
当产品被卸载时,删除已安装产品实例。留下实例可能会阻止在产品后续安装中正确存储设置。[rochecompaan]
interfaces/portal_quickinstaller.py: 不要使用列表作为默认参数值。[kleist]
将测试迁移到plone.app.testing并删除CMFTestCase依赖项。[tomgross]
PEP8清理。[tomgross]
3.0.6 (2012-03-15)
修复了一个错误,即通过GenericSetup配置文件安装的产品会记录该配置文件依赖项中的所有已安装项。这会导致在卸载产品时删除过多的内容。[davisagli]
添加了一些缺失的测试设置。[davisagli]
3.0.5 - 2011-03-31
仅在需要时注册测试配置文件。仅更改测试用例。[gotcha]
3.0.4 - 2011-02-26
保护isProductInstalled,使其只能由Manager调用。[davisagli]
从站点管理员的字典中删除实用工具映射,以启用完全卸载。这修复了一个问题,即基于级联的卸载不会完全删除实用工具,而只是从组件注册表中注销它们。
3.0.3 - 2010-11-06
更新了删除portalobjects方法,使其不删除实现IContentish或IFolderish的项。这有助于创建自定义产品并在安装时将内容容器放在根目录上的人。[eleddy]
3.0.2 - 2010-10-27
使用Zope 2.13+中的新get_registered_packages API获取已注册的包,而不是Products模块的_registered_packages属性。[davisagli]
3.0.1 - 2010-09-09
卸载控制面板。[elro]
3.0 - 2010-07-18
使用标准的doctest模块。[hannosch]
3.0b3 - 2010-02-04
重构了安装机制的最后部分,使其无需产品注册表。[hannosch]
将公共代码重构为检查和生成外部安装方法的辅助方法。[hannosch]
使listInstallableProducts摆脱对产品注册表的依赖。[hannosch]
添加了get_packages辅助方法,以减少对持久产品注册表的依赖,并将getProductFile方法转换为使用它。[hannosch]
3.0b2 - 2010-01-02
将可安装产品屏幕的限制限制为仅列出没有注册为for属性(即对任何类型的上下文)的扩展配置文件,或者注册为Products.CMFCore.interfaces.ISiteRoot或Products.CMFPlone.interfaces.IPloneSiteRoot的配置文件。这允许产品使用另一个标记接口将配置文件分组在一起,而不用担心它们会显示在portal_quickinstaller中。[optilude]
3.0b1 - 2009-12-27
删除了不再需要的对CMF < 2.1的检查。[hannosch]
添加了对Products.CMFCalendar缺失的测试依赖项。[hannosch]
3.0a1 - 2009-11-13
进一步优化了handleBeforeProfileImportEvent逻辑。我们忽略任何不可安装的配置文件。[hannosch]
将测试更改为使用addProfile而不是addProduct来安装此包,因为我们不再有自己的Extensions.Install模块。[hannosch]
更新了包元数据和清理旧代码。[hannosch]
声明包依赖和固定对使用全局变量的弃用警告。[hannosch]
2.1.7 (2009-4-4)
不要使用通用设置配置文件版本:配置文件版本与包版本无关。[wichert]
不要使用通用设置配置文件版本:配置文件版本与包版本无关。[wichert]
修复了安装测试中的动作。[hannosch]
在事件处理程序中缓存listInstallableProducts以改善门户创建时间。[stefan]
使用aq_parent(aq_inner())获取门户根,否则如果我们通过自身获取,可能会意外地得到快速安装工具。[sidnei]
2.1.6 (2008-07-07)
应用了一个小修复,该修复导致在日志生成期间安装良好的安装失败。[gogobd]
在InstalledProduct级联删除过程中,使用aq_base获取所有属性,这样我们就不必意外地尝试删除通过获取检索到的东西。[rafrombrc]
2.1.5 (2008-06-02)
改进getInstallMethod以记录ImportError而不是静默跳过它。不清楚为什么产品即使在实例启动时没有错误发生,也不会出现在QI中。[naro]
优先按标题排序可安装和已安装产品的列表,而不是按id。[hannosch]
正确处理具有预CMF2.1风格动作的产品。[wichert]
2.1.4 (2008-04-27)
即使旧式安装方法和通用设置配置文件中发生,错误也应只显示一次。[encolpe]
在查找产品的安装方法时,getInstallMethod应忽略ImportError。这使得可以安装具有正常通用设置配置文件但安装外部方法损坏的产品。[wichert]
2.1.3 (2008-04-21)
修复了getInstallProfile方法,用于从“Products”命名空间中的包。这允许快速安装器显示配置文件标题而不是产品名称。[encolpe]
2.1.2 (2008-04-20)
修复了来自“Products”命名空间的产品,同时具有安装配置文件和控制面板条目的情况。[encolpe]
添加了getattr代码,以确保未正确安装的产品卸载不会轻易失败。[hannosch, wichert]
为DEFAULT_CASCADE中的所有值添加了初始化代码。否则,在通过notifyInstalled安装的产品卸载期间可能会出现错误。[hannosch, wichert]
当README文件包含非ascii字符时,显示附加产品README文件可能会生成UnicodeDecodeError。这解决了http://dev.plone.org/plone/ticket/7524。[hannosch]
从QuickInstaller中移除了所有错误吞咽选项。现在,如果在产品安装期间遇到错误,我们总是引发错误。这解决了http://dev.plone.org/plone/ticket/7536。[hannosch]
2.1.1 (2008-03-26)
添加getProductDescription方法以公开扩展配置文件中的描述。[hannosch]
添加了新的listInstallableProfiles方法,以包括列表中不带Zope2控制面板条目的产品。[hannosch]
收紧了一些安全设置。[hannosch]
修复了CMF 2.1之前安装的产品中的动作重新/卸载。[hannosch]
恢复了在c38815中意外删除的代码。[hannosch]
2.1 (2008-03-09)
在通用设置配置文件中添加了metadata.xml。[hannosch]
避免了没有left或rightslots属性时InstalledProduct实例的破坏。感谢Cpi Progetti Spa的OpenCpi部门的Roberto Fontanarosa。[hannosch]
在utils中修复了日志代码。这解决了http://dev.plone.org/plone/ticket/7093。[bliles, hannosch]
撤销了getUtility的使用。关闭http://dev.plone.org/plone/ticket/7314。[hannosch]
修复了InstalledProduct中的类变量。所有产品将共享相同的左插槽和右插槽属性。感谢Saverio Mucci指出这一点。[hannosch]
挂钩到由通用设置的开发版本生成的import-events。这允许我们在配置文件成功导入时自动将产品标记为已安装。[wichert]
避免不必要的事务保存点。[hannosch]
2.0.3 (2007-07-09)
使用新的 GenericSetup 功能,所以我们不再需要更改当前设置工具上下文了。[hannosch]
2.0.2b3 (2007-05-01)
返回 getToolByName。[wichert]
为实用程序添加了卸载支持。现在,产品安装的所有附加实用程序都记录并正确卸载。[hannosch]
2.0.2b2 (2007-03-23)
在 installProduct 方法中添加了新的配置文件参数,以显式设置用于安装的配置文件。[hannosch]
将 Products.CMFQI 包标记为可卸载。[hannosch]
将所有 getToolByName 调用替换为 get/queryUtility。[hannosch]
2.0.2b1 (2007-03-05)
不在标准列表中显示已删除的产品。[hannosch]
调整 listInstallable 和 listInstalled 方法,以返回 GenericSetup 配置文件的标题而不是包名,以便基于扩展配置文件的安装。这些看起来好多了;) 这修复了 http://dev.plone.org/plone/ticket/6129。[hannosch]
2.0.1 (2007-02-10)
调整 installProduct 方法,使其与 CMF 2.1 兼容(包括工具到实用程序的转换)。[hannosch]
重构 ResourceRegistries 支持,使其无需在 QI 中安装产品。[hannosch]
添加了 INonInstallable 接口,用于查找提供非安装产品列表的实用程序。这允许应用程序从可安装产品列表中排除某些产品。[hannosch]
添加了一个选项,可以省略快照创建,默认为 True,以加快测试运行和迁移。[hannosch]
现在我们在安装前后自动创建 GenericSetup 快照,这样您至少可以比较产品在安装期间所做的更改。尽管如此,我们还没有更好的卸载方法。[hannosch]
2.0.0 (2006-10-25)
稍微优化了基于 GenericSetup 配置文件安装的效率。[hannosch]
调整了动作安装跟踪,以与 CMF 2.1+ 一起工作。[hannosch]
使基于配置文件安装与 CMF 2.1+ 一起工作。现在,配置文件 ID 可以使用完整的包名,而不仅仅是产品名(例如:Products.CMFCalendar 而不是 CMFCalendar)。[hannosch]
将 GS 配置文件注册改为基于 zcml。修复了一些日志调用的问题。从测试中删除了一些过时代码。[hannosch]
删除了大量未使用和 bbb 代码。此版本至少需要 CMF 1.6。[hannosch]
添加了对基于 GenericSetup 扩展配置文件安装的支持。[hannosch]
1.6.1 (2007-04-28)
禁用了产品重新安装的 postonly 保护。这破坏了 Plone 控制面板上的重新安装功能。一旦控制面板更改,就可以启用 postonly 保护。[hannosch]
1.6.0 (2007-04-22)
将 postonly 保护应用于产品卸载和重新安装。[alecm]
1.5.9 (2006-06-01)
修复了 utils.py 中的两个缺失导入。这关闭了 http://dev.plone.org/plone/ticket/5529。[hannosch]
1.5.8 (2006-05-15)
进行了一些常规清理。[hannosch]
避免对 product_name 产生弃用警告。[hannosch]
添加了显示 Products 目录和调试模式(如果启用)的方法 [joelburton]
1.5.7 (2005-12-23)
当添加新类型且 ResourceRegistries 已安装时,烹饪资源。[fschulze]
如果我们正在重新安装,并且看到异常,则不显示产品已安装的消息,而显示实际的错误消息 [wichert]
1.5.6 (2005-12-18)
修复 utils.py 中的缺失导入。这关闭了 http://dev.plone.org/plone/ticket/4817。[hannosch]
1.5.5
跟踪 ResourceRegistries 条目。[zwork]
1.5.4
listInstalledProducts 和 listInstallableProducts 现在返回字母顺序列表。[geoffd]
捕获了产品存在但安装无法编译的错误,这拾取了语法错误并将它们添加到错误字典中。当调用 listInstallableProducts 时,错误字典被刷新。还添加了一些 except ConflictErrors。[andym]
修复了 plone bug #3113,其中“卸载”按钮在没有选择项目时将引发异常;这使得 uninstallProducts() 方法与 installProducts() 方法对称 [optilude]
1.5.3
添加了Extensions.Install模块和一个初始测试套件。[stefan]
为install()和uninstall()方法添加了可选的重装参数。[tiran]
通过让parser.py更优雅地处理缺失的产品目录,实现了已删除产品的卸载。[tesdal]
修复了多个注册错误。
QI在产品已被注册到其他产品时不会将对象分配给产品。这修复了当产品被删除时,其本身已经安装了Archetypes的构架工具被删除的bug。[tiran]
添加了afterInstall / beforeUninstall钩子。
out = afterInstall(portal, reinstall=reinstall, qi_product) out, cascade = beforeUninstall(portal, reinstall, qi_product, cascade) [tiran]
1.4
重装按钮
与uninstall/install执行相同的操作,但不会删除在portal_level (portal_objects)上创建的对象。
产品版本信息
将getProductVersion添加到API,显示已安装产品的版本,也显示安装时的产品版本。
作者:Andy McKay
尝试创建外部方法时移除except: pass,如果导入日志中存在错误,将错误记录到ZLOG。不幸的是,我们还需要尝试捕获一个字符串错误。该字符串错误发生在模块找不到时,因此我们应该忽略该错误。
内容类型注册支持
QuickInstaller现在也跟踪content_type_registry中的条目。
如果产品已被从磁盘删除,则将其在已安装列表中标记为“已删除”
添加了ChangeLog :)
项目详情
Products.CMFQuickInstallerTool-4.0.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 725b0fc28c527f92419102c93ccb50e1b49f080a66c46479ec7b7fd666ecb2b2 |
|
MD5 | 4f9075d0d6e9b7d3bf0a6488c20ab34b |
|
BLAKE2b-256 | 05ab7f2deed40322ee23def36d729daa71ff239260c470a7e01b88164c058397 |
Products.CMFQuickInstallerTool-4.0.4-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 22d7521076f1360131d2274eae33a1087ac8e05727068eaed3e90460b68a4062 |
|
MD5 | 7d5d275b3d454a8495dae7d4b5dda1f8 |
|
BLAKE2b-256 | ab1e8b148424a2a6cd61fe6b5b7093f70458b427277d6103295789671ef98edd |