plone - 如何使用通用设置从列表类型资源注册表记录中删除元素

标签 plone genericsetup

在当前的 Plone 5 coredev 构建中,我正在尝试为在 cssregistry.xml 中注册一些 css 的附加组件编写一个 GenericSetup 卸载配置文件。在 Plone 5 中,portal_css 和 portal_javascripts 是空的,所有这些资源现在都自动加载到资源注册表中。但是没有相应的卸载。如果我有单个 css 资源,我会在资源注册表中获得以下记录:

  <record name="plone.resources/resource-myaddon-stylesheets.conf">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.css">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.deps">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.export">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.init">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.js">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.url">...</record>

(虽然我没有js资源,但我得到了所有这些,它们都是空值,除了css记录。)

此外,还有一个新的<element>在以下记录中:

<record name="plone.bundles/plone-legacy.resources" interface="Products.CMFPlone.interfaces.resources.IBundleRegistry" field="resources">

    ...

    <value>
      ...
      <element>resource-myaddon-stylesheets</element>
    </value>
</record>

当我创建我的 GS 卸载配置文件时,删除 registry.xml 中的前 7 条记录非常简单。但是如何删除单个 <element>从后者的记录?我查看了 plone.app.registry 中的测试,但似乎没有涵盖删除元素。

最终,如果卸载可以像安装一样自动处理,那就太好了。

最佳答案

似乎解决方法是将类似这样的内容添加到 Extensions/Install.py:

def _removeBundleFromRegistry():
    logger.info('Removing bundle reference from registry')

    record = 'plone.bundles/plone-legacy.resources'
    resources = api.portal.get_registry_record(record)
    if u'resource-myaddon-stylesheets' in resources:
        resources.remove(u'resource-myaddon-stylesheets')

def uninstall(portal, reinstall=False):
    if not reinstall:
        ...
        _removeBundleFromRegistry()
        ...

太糟糕了。

关于plone - 如何使用通用设置从列表类型资源注册表记录中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26874044/

相关文章:

plone - 重命名 Plone 站点

plone - 扩展个人偏好页面

javascript - 删除 Dexterity 内容类型上的字段集选项卡界面

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

plone - Plone 4 中的 HTML 过滤设置?

forms - 如何根据父级设置plone dexterity addform中bool类型的默认值

python - 旧 Plone 产品的自动化蛋化

plone - 强制英语作为 LinguaPlone 网站上的管理界面语言