diff --git a/src/design/plone/policy/upgrades.py b/src/design/plone/policy/upgrades.py index 04d546c..3677794 100644 --- a/src/design/plone/policy/upgrades.py +++ b/src/design/plone/policy/upgrades.py @@ -5,6 +5,7 @@ from design.plone.policy.setuphandlers import disable_searchable_types from design.plone.policy.setuphandlers import set_default_subsite_colors from design.plone.policy.utils import create_default_blocks +from design.plone.policy.interfaces import IDesignPlonePolicySettings from plone import api from plone.app.upgrade.utils import installOrReinstallProduct from plone.dexterity.utils import iterSchemata @@ -15,6 +16,7 @@ from zope.component import getUtility from zope.schema import getFields + import json import logging @@ -95,7 +97,16 @@ def to_1300(context): def to_1400(context): - pass + old = api.portal.get_registry_record( + name="design.plone.policy.twitter_token" + ) + context.runAllImportStepsFromProfile("profile-design.plone.policy:to_1400") + update_registry(context) + + if old: + api.portal.set_registry_record( + "twitter_token", old, interface=IDesignPlonePolicySettings + ) def to_1500(context): @@ -368,3 +379,35 @@ def to_3100(context): logger.info("### Items that were not modified ###") for i, path in enumerate(not_modified): logger.info(f"[{i+1}/{len(not_modified)}] - {path}") + + +def to_3101(context): + def remove_twitter(blocks_orig): + blocks = deepcopy(blocks_orig) + for key, block in blocks.items(): + if block.get("@type", "") == "twitter_posts": + del blocks[key] + + return blocks + + for brain in api.portal.get("portal_catalog")(): + item = aq_base(brain.getObject()) + for schema in iterSchemata(item): + for name, field in getFields(schema).items(): + if name == "blocks": + item.blocks = remove_twitter(item.blocks) + + elif isinstance(field, BlocksField): + value = deepcopy(field.get(item)) + if not value: + continue + try: + blocks = value.get("blocks", {}) + except AttributeError: + logger.warning( + "[BLOCK] - {} (not converted)".format( + brain.getURL() + ) + ) + if blocks: + item.blocks = remove_twitter(blocks) diff --git a/src/design/plone/policy/upgrades.zcml b/src/design/plone/policy/upgrades.zcml index bd112bc..eea68e3 100644 --- a/src/design/plone/policy/upgrades.zcml +++ b/src/design/plone/policy/upgrades.zcml @@ -181,4 +181,14 @@ handler=".upgrades.to_3100" /> + + +