From c309456bcbfc07a6deb4e537d8a48ad2c933c95c Mon Sep 17 00:00:00 2001 From: mauritsvanrees Date: Sat, 11 Sep 2021 23:09:34 +0200 Subject: [PATCH] [fc] Repository: plone.app.upgrade Branch: refs/heads/master Date: 2021-02-11T17:30:18+01:00 Author: ale-rt (ale-rt) Commit: https://github.com/plone/plone.app.upgrade/commit/2c82ffb957bca0d14d760ff73cd094a0b9f1febe Make the Plone Site a dexterity container Refs. https://github.com/plone/Products.CMFPlone/issues/2454 Files changed: A news/0000.breaking M plone/app/upgrade/v60/alphas.py M plone/app/upgrade/v60/configure.zcml Repository: plone.app.upgrade Branch: refs/heads/master Date: 2021-02-14T12:16:37+01:00 Author: ale-rt (ale-rt) Commit: https://github.com/plone/plone.app.upgrade/commit/699e6f9ab235e42e752c85fab8511b71537e1be7 Update the Plone Site FTI if it is not a dexterity one Files changed: A plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml A plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml M plone/app/upgrade/v60/alphas.py M plone/app/upgrade/v60/configure.zcml M plone/app/upgrade/v60/profiles.zcml Repository: plone.app.upgrade Branch: refs/heads/master Date: 2021-04-23T11:58:40+02:00 Author: ale-rt (ale-rt) Commit: https://github.com/plone/plone.app.upgrade/commit/7aea789843eb484158a0a2d9514e2bcd964b3a79 Merge remote-tracking branch 'origin/master' into dx-siteroot Files changed: A plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml M CHANGES.rst M plone/app/upgrade/v52/configure.zcml M plone/app/upgrade/v52/final.py M setup.py D news/2957.breaking D news/3057.bugfix D news/3172.bugfix Repository: plone.app.upgrade Branch: refs/heads/master Date: 2021-08-21T01:38:33+02:00 Author: Maurits van Rees (mauritsvanrees) Commit: https://github.com/plone/plone.app.upgrade/commit/78f782e8eba75106cd79eb86e9a73625b23325f7 Merge remote-tracking branch 'origin/master' into dx-siteroot Files changed: A news/254.feature A news/255.feature A plone/app/upgrade/v60/profiles/to_alpha1/actions.xml M CHANGES.rst M plone/app/upgrade/v52/configure.zcml M plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml M setup.py Repository: plone.app.upgrade Branch: refs/heads/master Date: 2021-09-07T09:45:21+02:00 Author: ale-rt (ale-rt) Commit: https://github.com/plone/plone.app.upgrade/commit/ec75f02c00e57716c7e869af12dac2ebc79816b8 Fix towncrier entry Files changed: A news/256.breaking D news/0000.breaking Repository: plone.app.upgrade Branch: refs/heads/master Date: 2021-09-11T23:09:34+02:00 Author: Maurits van Rees (mauritsvanrees) Commit: https://github.com/plone/plone.app.upgrade/commit/c3f6407d70cc707cd582fa41c76f0d4bd16f3462 Merge pull request #256 from plone/dx-siteroot Dx siteroot Files changed: A news/256.breaking A plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml A plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml M plone/app/upgrade/v60/alphas.py M plone/app/upgrade/v60/configure.zcml M plone/app/upgrade/v60/profiles.zcml --- last_commit.txt | 116 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 86 insertions(+), 30 deletions(-) diff --git a/last_commit.txt b/last_commit.txt index 1988bd0d24..fc3923ce05 100644 --- a/last_commit.txt +++ b/last_commit.txt @@ -1,63 +1,119 @@ -Repository: Products.PortalTransforms +Repository: plone.app.upgrade Branch: refs/heads/master -Date: 2021-09-11T10:08:19+02:00 -Author: Philip Bauer (pbauer) -Commit: https://github.com/plone/Products.PortalTransforms/commit/bb788b354404843913a7415535d216c069cc65d6 +Date: 2021-02-11T17:30:18+01:00 +Author: ale-rt (ale-rt) +Commit: https://github.com/plone/plone.app.upgrade/commit/2c82ffb957bca0d14d760ff73cd094a0b9f1febe -Fix ValueError: invalid literal for int() with base 10 when transforming some html to text +Make the Plone Site a dexterity container + +Refs. https://github.com/plone/Products.CMFPlone/issues/2454 Files changed: -M Products/PortalTransforms/transforms/html_to_text.py +A news/0000.breaking +M plone/app/upgrade/v60/alphas.py +M plone/app/upgrade/v60/configure.zcml -b"diff --git a/Products/PortalTransforms/transforms/html_to_text.py b/Products/PortalTransforms/transforms/html_to_text.py\nindex 6ece3b7..4543fe7 100644\n--- a/Products/PortalTransforms/transforms/html_to_text.py\n+++ b/Products/PortalTransforms/transforms/html_to_text.py\n@@ -17,7 +17,7 @@ def sub_func(matchobj):\n ent = matchobj.group(1)\n result = html_entities.name2codepoint.get(ent)\n if result is None:\n- if ent.startswith('#'):\n+ if ent.startswith('#') and ent[1:].isdecimal():\n res = six.unichr(int(ent[1:]))\n else:\n res = full\n" +b'diff --git a/news/0000.breaking b/news/0000.breaking\nnew file mode 100644\nindex 00000000..a9aca4f8\n--- /dev/null\n+++ b/news/0000.breaking\n@@ -0,0 +1 @@\n+FIXME: Upgrade to dx site root\n\\ No newline at end of file\ndiff --git a/plone/app/upgrade/v60/alphas.py b/plone/app/upgrade/v60/alphas.py\nindex dc23d0d7..eb549ede 100644\n--- a/plone/app/upgrade/v60/alphas.py\n+++ b/plone/app/upgrade/v60/alphas.py\n@@ -1,14 +1,15 @@\n # -*- coding: utf-8 -*-\n from plone.app.upgrade.utils import loadMigrationProfile\n+from zope.component.hooks import getSite\n \n import logging\n \n \n-logger = logging.getLogger(\'plone.app.upgrade\')\n+logger = logging.getLogger("plone.app.upgrade")\n \n \n def to60alpha1(context):\n- loadMigrationProfile(context, \'profile-plone.app.upgrade.v60:to60alpha1\')\n+ loadMigrationProfile(context, "profile-plone.app.upgrade.v60:to60alpha1")\n \n \n def remove_temp_folder(context):\n@@ -34,3 +35,26 @@ def remove_temp_folder(context):\n del app._mount_points[broken_id]\n app._p_changed = True\n logger.info("Removed %s from Zope root _mount_points.", broken_id)\n+\n+\n+def make_site_dx(context):\n+ """Make the Plone Site a dexterity container"""\n+ portal = getSite()\n+\n+ if portal._tree is not None:\n+ # We assume the object has been already initialized\n+ return\n+\n+ portal._initBTrees()\n+\n+ for obj_meta in portal._objects:\n+ obj_id = obj_meta["id"]\n+ logger.info("Migrating object %r", obj_id)\n+ # Load the content object ...\n+ obj = portal.__dict__.pop(obj_id)\n+ # ...and insert it into the btree.\n+ # Use _setOb so we don\'t reindex stuff: the paths stay the same.\n+ portal._setOb(obj_id, obj)\n+\n+ delattr(portal, "_objects")\n+ portal._p_changed = True\n\\ No newline at end of file\ndiff --git a/plone/app/upgrade/v60/configure.zcml b/plone/app/upgrade/v60/configure.zcml\nindex dd9646a9..8448aab6 100644\n--- a/plone/app/upgrade/v60/configure.zcml\n+++ b/plone/app/upgrade/v60/configure.zcml\n@@ -22,6 +22,11 @@\n handler=".alphas.remove_temp_folder"\n />\n \n+ \n+\n \n \n \n' -Repository: Products.PortalTransforms +Repository: plone.app.upgrade Branch: refs/heads/master -Date: 2021-09-11T10:10:04+02:00 -Author: Philip Bauer (pbauer) -Commit: https://github.com/plone/Products.PortalTransforms/commit/a7ca44bb2a83b3bbc1135818161862d80eb0f641 +Date: 2021-02-14T12:16:37+01:00 +Author: ale-rt (ale-rt) +Commit: https://github.com/plone/plone.app.upgrade/commit/699e6f9ab235e42e752c85fab8511b71537e1be7 -add changenote +Update the Plone Site FTI if it is not a dexterity one Files changed: -A news/46.bugfix +A plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml +A plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml +M plone/app/upgrade/v60/alphas.py +M plone/app/upgrade/v60/configure.zcml +M plone/app/upgrade/v60/profiles.zcml -b'diff --git a/news/46.bugfix b/news/46.bugfix\nnew file mode 100644\nindex 0000000..bfa20b4\n--- /dev/null\n+++ b/news/46.bugfix\n@@ -0,0 +1,2 @@\n+Fix "ValueError: invalid literal for int() with base 10" when transforming some html to text.\n+[pbauer]\n\\ No newline at end of file\n' +b'diff --git a/plone/app/upgrade/v60/alphas.py b/plone/app/upgrade/v60/alphas.py\nindex eb549ede..859a5a77 100644\n--- a/plone/app/upgrade/v60/alphas.py\n+++ b/plone/app/upgrade/v60/alphas.py\n@@ -1,5 +1,8 @@\n # -*- coding: utf-8 -*-\n from plone.app.upgrade.utils import loadMigrationProfile\n+from plone.dexterity.fti import DexterityFTI\n+from Products.CMFCore.utils import getToolByName\n+from ZODB.broken import Broken\n from zope.component.hooks import getSite\n \n import logging\n@@ -14,7 +17,6 @@ def to60alpha1(context):\n \n def remove_temp_folder(context):\n """Remove temp_folder from Zope root if broken."""\n- from ZODB.broken import Broken\n \n app = context.unrestrictedTraverse("/")\n broken_id = "temp_folder"\n@@ -37,6 +39,19 @@ def remove_temp_folder(context):\n logger.info("Removed %s from Zope root _mount_points.", broken_id)\n \n \n+def change_plone_site_fti(context):\n+ pt = getToolByName(context, "portal_types")\n+ fti = pt.getTypeInfo("Plone Site")\n+\n+ if isinstance(fti, DexterityFTI):\n+ # We assume the fti has been already fixed ...\n+ return\n+\n+ # ... otherwise we fix it\n+ del pt["Plone Site"]\n+ loadMigrationProfile(context, "profile-plone.app.upgrade.v60:to_dx_site_root")\n+\n+\n def make_site_dx(context):\n """Make the Plone Site a dexterity container"""\n portal = getSite()\n@@ -52,9 +67,13 @@ def make_site_dx(context):\n logger.info("Migrating object %r", obj_id)\n # Load the content object ...\n obj = portal.__dict__.pop(obj_id)\n- # ...and insert it into the btree.\n- # Use _setOb so we don\'t reindex stuff: the paths stay the same.\n- portal._setOb(obj_id, obj)\n+ if not isinstance(obj, Broken) and obj_id not in (\n+ "portal_quickinstaller",\n+ "portal_form_controller",\n+ ):\n+ # ...and insert it into the btree.\n+ # Use _setOb so we don\'t reindex stuff: the paths stay the same.\n+ portal._setOb(obj_id, obj)\n \n delattr(portal, "_objects")\n portal._p_changed = True\n\\ No newline at end of file\ndiff --git a/plone/app/upgrade/v60/configure.zcml b/plone/app/upgrade/v60/configure.zcml\nindex 8448aab6..255129c4 100644\n--- a/plone/app/upgrade/v60/configure.zcml\n+++ b/plone/app/upgrade/v60/configure.zcml\n@@ -11,6 +11,16 @@\n destination="6000"\n profile="Products.CMFPlone:plone">\n \n+ \n+\n+ \n+\n \n \n- \n-\n \n \n \ndiff --git a/plone/app/upgrade/v60/profiles.zcml b/plone/app/upgrade/v60/profiles.zcml\nindex 5a890640..7bb1ccc6 100644\n--- a/plone/app/upgrade/v60/profiles.zcml\n+++ b/plone/app/upgrade/v60/profiles.zcml\n@@ -12,4 +12,16 @@\n provides="Products.GenericSetup.interfaces.EXTENSION"\n />\n \n+ \n+ \n+\n \ndiff --git a/plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml b/plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml\nnew file mode 100644\nindex 00000000..12923de5\n--- /dev/null\n+++ b/plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml\n@@ -0,0 +1,4 @@\n+\n+\n+ \n+\ndiff --git a/plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml b/plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml\nnew file mode 100644\nindex 00000000..45278021\n--- /dev/null\n+++ b/plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml\n@@ -0,0 +1,79 @@\n+\n+\n+\n+ \n+ Plone Site\n+ \n+\n+ False\n+ manage_addSite\n+ \n+ \n+\n+ \n+ \n+ False\n+ False\n+\n+ \n+ cmf.AddPortalContent\n+ Products.CMFPlone.Portal.PloneSite\n+ plone.app.contenttypes.schema:folder.xml\n+ \n+ \n+\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+\n+ \n+ string:${folder_url}/addPlone Site\n+ listing_view\n+ False\n+ view\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+\n+\n' -Repository: Products.PortalTransforms +Repository: plone.app.upgrade Branch: refs/heads/master -Date: 2021-09-11T11:26:42+02:00 -Author: Philip Bauer (pbauer) -Commit: https://github.com/plone/Products.PortalTransforms/commit/85cdb538a0c241df2d5300168d247b74b06011dd +Date: 2021-04-23T11:58:40+02:00 +Author: ale-rt (ale-rt) +Commit: https://github.com/plone/plone.app.upgrade/commit/7aea789843eb484158a0a2d9514e2bcd964b3a79 -I hate python 2 +Merge remote-tracking branch 'origin/master' into dx-siteroot Files changed: -M Products/PortalTransforms/transforms/html_to_text.py +A plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml +M CHANGES.rst +M plone/app/upgrade/v52/configure.zcml +M plone/app/upgrade/v52/final.py +M setup.py +D news/2957.breaking +D news/3057.bugfix +D news/3172.bugfix -b"diff --git a/Products/PortalTransforms/transforms/html_to_text.py b/Products/PortalTransforms/transforms/html_to_text.py\nindex 4543fe7..bf2d8a6 100644\n--- a/Products/PortalTransforms/transforms/html_to_text.py\n+++ b/Products/PortalTransforms/transforms/html_to_text.py\n@@ -17,8 +17,12 @@ def sub_func(matchobj):\n ent = matchobj.group(1)\n result = html_entities.name2codepoint.get(ent)\n if result is None:\n- if ent.startswith('#') and ent[1:].isdecimal():\n- res = six.unichr(int(ent[1:]))\n+ if ent.startswith('#'):\n+ try:\n+ number = int(ent[1:])\n+ res = six.unichr(number)\n+ except:\n+ res = full\n else:\n res = full\n else:\n" +b'diff --git a/CHANGES.rst b/CHANGES.rst\nindex bb5af940..755281dd 100644\n--- a/CHANGES.rst\n+++ b/CHANGES.rst\n@@ -8,6 +8,39 @@ Changelog\n \n .. towncrier release notes start\n \n+2.0.38 (2021-03-02)\n+-------------------\n+\n+Bug fixes:\n+\n+\n+- Make portal_setup objects accessible only to Manager/Owner.\n+ See `GenericSetup issue 101 `_.\n+ [maurits] (#101)\n+\n+\n+2.0.37 (2021-02-19)\n+-------------------\n+\n+Breaking changes:\n+\n+\n+- Remove temp_folder from Zope root if broken.\n+ See `issue 2957 `_.\n+ [maurits] (#2957)\n+\n+\n+Bug fixes:\n+\n+\n+- Plone 6.0: remove portal_form_controller tool.\n+ [maurits] (#3057)\n+- Improved upgrade step for site_logo from ASCII to Bytes.\n+ The previous upgrade was incomplete and could remove the logo when called twice.\n+ See `comment on issue 3172 `_.\n+ [maurits] (#3172)\n+\n+\n 2.0.36 (2020-10-30)\n -------------------\n \ndiff --git a/news/2957.breaking b/news/2957.breaking\ndeleted file mode 100644\nindex 617e73d1..00000000\n--- a/news/2957.breaking\n+++ /dev/null\n@@ -1,3 +0,0 @@\n-Remove temp_folder from Zope root if broken.\n-See `issue 2957 `_.\n-[maurits]\ndiff --git a/news/3057.bugfix b/news/3057.bugfix\ndeleted file mode 100644\nindex b6861442..00000000\n--- a/news/3057.bugfix\n+++ /dev/null\n@@ -1,2 +0,0 @@\n-Plone 6.0: remove portal_form_controller tool.\n-[maurits]\ndiff --git a/news/3172.bugfix b/news/3172.bugfix\ndeleted file mode 100644\nindex 25665e32..00000000\n--- a/news/3172.bugfix\n+++ /dev/null\n@@ -1,4 +0,0 @@\n-Improved upgrade step for site_logo from ASCII to Bytes.\n-The previous upgrade was incomplete and could remove the logo when called twice.\n-See `comment on issue 3172 `_.\n-[maurits]\ndiff --git a/plone/app/upgrade/v52/configure.zcml b/plone/app/upgrade/v52/configure.zcml\nindex d5b7f798..82b0ff03 100644\n--- a/plone/app/upgrade/v52/configure.zcml\n+++ b/plone/app/upgrade/v52/configure.zcml\n@@ -181,4 +181,16 @@\n \n \n \n+ \n+\n+ \n+\n+ \n+\n \ndiff --git a/plone/app/upgrade/v52/final.py b/plone/app/upgrade/v52/final.py\nindex 0b99fa8b..78aa1b58 100644\n--- a/plone/app/upgrade/v52/final.py\n+++ b/plone/app/upgrade/v52/final.py\n@@ -1,10 +1,12 @@\n # -*- coding: utf-8 -*-\n+from AccessControl.Permissions import view\n from plone.app.upgrade.utils import loadMigrationProfile\n from plone.registry import field\n from plone.registry.interfaces import IRegistry\n from Products.CMFCore.utils import getToolByName\n from Products.CMFPlone.interfaces import IMarkupSchema\n from Products.CMFPlone.interfaces import ISiteSchema\n+from Products.CMFPlone.utils import base_hasattr\n from Products.CMFPlone.utils import safe_unicode\n from zope.component import getUtility\n \n@@ -238,3 +240,30 @@ def migrate_site_logo_from_ascii_to_bytes(context):\n you get a WrongType error when saving the site-controlpanel.\n """\n migrate_record_from_ascii_to_bytes("plone.site_logo", ISiteSchema, prefix="plone")\n+\n+\n+def _recursive_strict_permission(obj):\n+ obj.manage_permission(view, (\'Manager\', \'Owner\'), 0)\n+ if base_hasattr(obj, \'objectValues\'):\n+ for child in obj.objectValues():\n+ _recursive_strict_permission(child)\n+\n+\n+def secure_portal_setup_objects(context):\n+ """Make portal_setup objects accessible only to Manager/Owner.\n+\n+ This matches the GenericSetup code for new logs and snapshots.\n+ See https://github.com/zopefoundation/Products.GenericSetup/pull/102\n+ """\n+ # context conveniently is the portal_setup too.\n+ # Set permission on the sub objects of the setup tool, which are the logs.\n+ for child in context.objectValues():\n+ # Recursive is not strictly needed, but it does not hurt.\n+ _recursive_strict_permission(child)\n+ logger.info("Made portal_setup logs only available for Manager and Owner.")\n+\n+ # And now the snapshot folder and sub items, if they exist.\n+ if not base_hasattr(context, "snapshots"):\n+ return\n+ _recursive_strict_permission(context.snapshots)\n+ logger.info("Made portal_setup snapshots only available for Manager and Owner.")\ndiff --git a/plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml b/plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml\nnew file mode 100644\nindex 00000000..a3806412\n--- /dev/null\n+++ b/plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml\n@@ -0,0 +1,41 @@\n+\n+\n+\n+ \n+ \n+ Plone Site Setup: Users and Groups\n+ \n+\n+ \n+ \n+ Plone Site Setup: Users and Groups\n+ \n+ \n+ Plone Site Setup: Users and Groups\n+ \n+ \n+ Plone Site Setup: Users and Groups\n+ \n+ \n+ Plone Site Setup: Users and Groups\n+ \n+\n+\n\\ No newline at end of file\ndiff --git a/setup.py b/setup.py\nindex e1f5f8ce..891304fc 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2,7 +2,7 @@\n from setuptools import setup\n \n \n-version = \'2.0.37.dev0\'\n+version = \'2.0.39.dev0\'\n \n setup(\n name=\'plone.app.upgrade\',\n' -Repository: Products.PortalTransforms +Repository: plone.app.upgrade Branch: refs/heads/master -Date: 2021-09-11T13:21:05+02:00 -Author: Philip Bauer (pbauer) -Commit: https://github.com/plone/Products.PortalTransforms/commit/92e753e6d5f54c2aa445af086c8f45aa4e8b4253 +Date: 2021-08-21T01:38:33+02:00 +Author: Maurits van Rees (mauritsvanrees) +Commit: https://github.com/plone/plone.app.upgrade/commit/78f782e8eba75106cd79eb86e9a73625b23325f7 + +Merge remote-tracking branch 'origin/master' into dx-siteroot + +Files changed: +A news/254.feature +A news/255.feature +A plone/app/upgrade/v60/profiles/to_alpha1/actions.xml +M CHANGES.rst +M plone/app/upgrade/v52/configure.zcml +M plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml +M setup.py -Merge pull request #46 from plone/fix_html_to_text +b'diff --git a/CHANGES.rst b/CHANGES.rst\nindex 755281dd..024a37c3 100644\n--- a/CHANGES.rst\n+++ b/CHANGES.rst\n@@ -8,6 +8,16 @@ Changelog\n \n .. towncrier release notes start\n \n+2.0.39 (2021-07-31)\n+-------------------\n+\n+Bug fixes:\n+\n+\n+- Added upgrade to 5213, Plone 5.2.5.\n+ [maurits] (#525)\n+\n+\n 2.0.38 (2021-03-02)\n -------------------\n \ndiff --git a/news/254.feature b/news/254.feature\nnew file mode 100644\nindex 00000000..438e9900\n--- /dev/null\n+++ b/news/254.feature\n@@ -0,0 +1,2 @@\n+Protect @@historyview with Modify portal content permission. Fixes https://github.com/plone/Products.CMFPlone/issues/3297\n+[pbauer]\n\\ No newline at end of file\ndiff --git a/news/255.feature b/news/255.feature\nnew file mode 100644\nindex 00000000..01207bc4\n--- /dev/null\n+++ b/news/255.feature\n@@ -0,0 +1,2 @@\n+Add relations controlpanel as part of https://github.com/plone/Products.CMFPlone/pull/3232\n+[pbauer]\n\\ No newline at end of file\ndiff --git a/plone/app/upgrade/v52/configure.zcml b/plone/app/upgrade/v52/configure.zcml\nindex 82b0ff03..9957048d 100644\n--- a/plone/app/upgrade/v52/configure.zcml\n+++ b/plone/app/upgrade/v52/configure.zcml\n@@ -193,4 +193,18 @@\n \n \n \n+ \n+ \n+\n+ \n+\n+ \n+\n \ndiff --git a/plone/app/upgrade/v60/profiles/to_alpha1/actions.xml b/plone/app/upgrade/v60/profiles/to_alpha1/actions.xml\nnew file mode 100644\nindex 00000000..55e5faf8\n--- /dev/null\n+++ b/plone/app/upgrade/v60/profiles/to_alpha1/actions.xml\n@@ -0,0 +1,11 @@\n+\n+\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+\ndiff --git a/plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml b/plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml\nindex a3806412..6f475650 100644\n--- a/plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml\n+++ b/plone/app/upgrade/v60/profiles/to_alpha1/controlpanel.xml\n@@ -36,6 +36,12 @@\n url_expr="string:${portal_url}/@@member-fields" visible="True"\n i18n:attributes="title">\n Plone Site Setup: Users and Groups\n- \n-\n+ \n+ \n+ Inspect Relations\n+ \n \n\\ No newline at end of file\ndiff --git a/setup.py b/setup.py\nindex 891304fc..981a789e 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2,7 +2,7 @@\n from setuptools import setup\n \n \n-version = \'2.0.39.dev0\'\n+version = \'2.0.40.dev0\'\n \n setup(\n name=\'plone.app.upgrade\',\n@@ -17,6 +17,7 @@\n "Framework :: Plone :: 5.0",\n "Framework :: Plone :: 5.1",\n "Framework :: Plone :: 5.2",\n+ "Framework :: Plone :: 6.0",\n "Framework :: Plone :: Core",\n "Framework :: Zope2",\n "Framework :: Zope :: 4",\n@@ -27,6 +28,7 @@\n "Programming Language :: Python :: 3.6",\n "Programming Language :: Python :: 3.7",\n "Programming Language :: Python :: 3.8",\n+ "Programming Language :: Python :: 3.9",\n ],\n keywords=\'Plone upgrade migration\',\n author=\'Plone Foundation\',\n' + +Repository: plone.app.upgrade + + +Branch: refs/heads/master +Date: 2021-09-07T09:45:21+02:00 +Author: ale-rt (ale-rt) +Commit: https://github.com/plone/plone.app.upgrade/commit/ec75f02c00e57716c7e869af12dac2ebc79816b8 -Fix ValueError: invalid literal for int() with base 10 +Fix towncrier entry Files changed: -A news/46.bugfix -M Products/PortalTransforms/transforms/html_to_text.py +A news/256.breaking +D news/0000.breaking -b'diff --git a/Products/PortalTransforms/transforms/html_to_text.py b/Products/PortalTransforms/transforms/html_to_text.py\nindex 6ece3b7..bf2d8a6 100644\n--- a/Products/PortalTransforms/transforms/html_to_text.py\n+++ b/Products/PortalTransforms/transforms/html_to_text.py\n@@ -18,7 +18,11 @@ def sub_func(matchobj):\n result = html_entities.name2codepoint.get(ent)\n if result is None:\n if ent.startswith(\'#\'):\n- res = six.unichr(int(ent[1:]))\n+ try:\n+ number = int(ent[1:])\n+ res = six.unichr(number)\n+ except:\n+ res = full\n else:\n res = full\n else:\ndiff --git a/news/46.bugfix b/news/46.bugfix\nnew file mode 100644\nindex 0000000..bfa20b4\n--- /dev/null\n+++ b/news/46.bugfix\n@@ -0,0 +1,2 @@\n+Fix "ValueError: invalid literal for int() with base 10" when transforming some html to text.\n+[pbauer]\n\\ No newline at end of file\n' +b'diff --git a/news/0000.breaking b/news/0000.breaking\ndeleted file mode 100644\nindex a9aca4f8..00000000\n--- a/news/0000.breaking\n+++ /dev/null\n@@ -1 +0,0 @@\n-FIXME: Upgrade to dx site root\n\\ No newline at end of file\ndiff --git a/news/256.breaking b/news/256.breaking\nnew file mode 100644\nindex 00000000..c26cccb5\n--- /dev/null\n+++ b/news/256.breaking\n@@ -0,0 +1 @@\n+Upgrade step to make the Plone site a dexterity object\n' + +Repository: plone.app.upgrade + + +Branch: refs/heads/master +Date: 2021-09-11T23:09:34+02:00 +Author: Maurits van Rees (mauritsvanrees) +Commit: https://github.com/plone/plone.app.upgrade/commit/c3f6407d70cc707cd582fa41c76f0d4bd16f3462 + +Merge pull request #256 from plone/dx-siteroot + +Dx siteroot + +Files changed: +A news/256.breaking +A plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml +A plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml +M plone/app/upgrade/v60/alphas.py +M plone/app/upgrade/v60/configure.zcml +M plone/app/upgrade/v60/profiles.zcml + +b'diff --git a/news/256.breaking b/news/256.breaking\nnew file mode 100644\nindex 00000000..c26cccb5\n--- /dev/null\n+++ b/news/256.breaking\n@@ -0,0 +1 @@\n+Upgrade step to make the Plone site a dexterity object\ndiff --git a/plone/app/upgrade/v60/alphas.py b/plone/app/upgrade/v60/alphas.py\nindex dc23d0d7..859a5a77 100644\n--- a/plone/app/upgrade/v60/alphas.py\n+++ b/plone/app/upgrade/v60/alphas.py\n@@ -1,19 +1,22 @@\n # -*- coding: utf-8 -*-\n from plone.app.upgrade.utils import loadMigrationProfile\n+from plone.dexterity.fti import DexterityFTI\n+from Products.CMFCore.utils import getToolByName\n+from ZODB.broken import Broken\n+from zope.component.hooks import getSite\n \n import logging\n \n \n-logger = logging.getLogger(\'plone.app.upgrade\')\n+logger = logging.getLogger("plone.app.upgrade")\n \n \n def to60alpha1(context):\n- loadMigrationProfile(context, \'profile-plone.app.upgrade.v60:to60alpha1\')\n+ loadMigrationProfile(context, "profile-plone.app.upgrade.v60:to60alpha1")\n \n \n def remove_temp_folder(context):\n """Remove temp_folder from Zope root if broken."""\n- from ZODB.broken import Broken\n \n app = context.unrestrictedTraverse("/")\n broken_id = "temp_folder"\n@@ -34,3 +37,43 @@ def remove_temp_folder(context):\n del app._mount_points[broken_id]\n app._p_changed = True\n logger.info("Removed %s from Zope root _mount_points.", broken_id)\n+\n+\n+def change_plone_site_fti(context):\n+ pt = getToolByName(context, "portal_types")\n+ fti = pt.getTypeInfo("Plone Site")\n+\n+ if isinstance(fti, DexterityFTI):\n+ # We assume the fti has been already fixed ...\n+ return\n+\n+ # ... otherwise we fix it\n+ del pt["Plone Site"]\n+ loadMigrationProfile(context, "profile-plone.app.upgrade.v60:to_dx_site_root")\n+\n+\n+def make_site_dx(context):\n+ """Make the Plone Site a dexterity container"""\n+ portal = getSite()\n+\n+ if portal._tree is not None:\n+ # We assume the object has been already initialized\n+ return\n+\n+ portal._initBTrees()\n+\n+ for obj_meta in portal._objects:\n+ obj_id = obj_meta["id"]\n+ logger.info("Migrating object %r", obj_id)\n+ # Load the content object ...\n+ obj = portal.__dict__.pop(obj_id)\n+ if not isinstance(obj, Broken) and obj_id not in (\n+ "portal_quickinstaller",\n+ "portal_form_controller",\n+ ):\n+ # ...and insert it into the btree.\n+ # Use _setOb so we don\'t reindex stuff: the paths stay the same.\n+ portal._setOb(obj_id, obj)\n+\n+ delattr(portal, "_objects")\n+ portal._p_changed = True\n\\ No newline at end of file\ndiff --git a/plone/app/upgrade/v60/configure.zcml b/plone/app/upgrade/v60/configure.zcml\nindex dd9646a9..255129c4 100644\n--- a/plone/app/upgrade/v60/configure.zcml\n+++ b/plone/app/upgrade/v60/configure.zcml\n@@ -11,6 +11,16 @@\n destination="6000"\n profile="Products.CMFPlone:plone">\n \n+ \n+\n+ \n+\n \n \n+ \n+ \n+\n \ndiff --git a/plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml b/plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml\nnew file mode 100644\nindex 00000000..12923de5\n--- /dev/null\n+++ b/plone/app/upgrade/v60/profiles/to_dx_site_root/types.xml\n@@ -0,0 +1,4 @@\n+\n+\n+ \n+\ndiff --git a/plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml b/plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml\nnew file mode 100644\nindex 00000000..45278021\n--- /dev/null\n+++ b/plone/app/upgrade/v60/profiles/to_dx_site_root/types/Plone_Site.xml\n@@ -0,0 +1,79 @@\n+\n+\n+\n+ \n+ Plone Site\n+ \n+\n+ False\n+ manage_addSite\n+ \n+ \n+\n+ \n+ \n+ False\n+ False\n+\n+ \n+ cmf.AddPortalContent\n+ Products.CMFPlone.Portal.PloneSite\n+ plone.app.contenttypes.schema:folder.xml\n+ \n+ \n+\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+\n+ \n+ string:${folder_url}/addPlone Site\n+ listing_view\n+ False\n+ view\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+\n+\n'