From 49b7f77ec01c400b9b94bde5b2362e66c18218df Mon Sep 17 00:00:00 2001 From: Luca Bellenghi Date: Mon, 24 Feb 2025 16:00:34 +0100 Subject: [PATCH 1/2] update with structure creation --- .../plone/contenttypes/events/common.py | 36 +++++++++++++----- .../profiles/default/metadata.xml | 2 +- .../tests/test_substructure_creation.py | 4 ++ .../contenttypes/upgrades/configure.zcml | 7 ++++ .../plone/contenttypes/upgrades/to_730x.py | 37 ++++++++++++++++++- 5 files changed, 74 insertions(+), 12 deletions(-) diff --git a/src/design/plone/contenttypes/events/common.py b/src/design/plone/contenttypes/events/common.py index 8eb82ddb..52b53063 100644 --- a/src/design/plone/contenttypes/events/common.py +++ b/src/design/plone/contenttypes/events/common.py @@ -163,6 +163,18 @@ "title": "Altri documenti", "allowed_types": ("File", "Image", "Link"), }, + { + "id": "dichiarazione-insussistenza-cause-di-inconferibilita-e-incompatibilita", # noqa + "title": "Dichiarazione insussistenza cause di inconferibilità e" + " incompatibilità", + "allowed_types": ("File",), + }, + { + "id": "emolumenti-complessivi-percepiti-a-carico-della-finanza-pubblica", # noqa + "title": "Emolumenti complessivi percepiti a carico della finanza" + " pubblica", + "allowed_types": ("File",), + }, ], "allowed_types": [], }, @@ -207,16 +219,7 @@ def onModify(context, event): child.reindexObject(idxs=["parent"]) -def createSubfolders(context, event): - """ - Create subfolders structure based on a portal_type mapping - """ - if not IDesignPloneContenttypesLayer.providedBy(context.REQUEST): - return - - subfolders_mapping = SUBFOLDERS_MAPPING.get(context.portal_type, []) - if not subfolders_mapping: - return +def createStructure(context, subfolders_mapping): for mapping in subfolders_mapping.get("content", {}): if mapping["id"] not in context.keys(): @@ -251,3 +254,16 @@ def createSubfolders(context, event): constraints_context = ISelectableConstrainTypes(context) constraints_context.setConstrainTypesMode(1) constraints_context.setLocallyAllowedTypes(allowed_types) + + +def createSubfolders(context, event): + """ + Create subfolders structure based on a portal_type mapping + """ + if not IDesignPloneContenttypesLayer.providedBy(context.REQUEST): + return + + subfolders_mapping = SUBFOLDERS_MAPPING.get(context.portal_type, []) + if not subfolders_mapping: + return + createStructure(context, subfolders_mapping) diff --git a/src/design/plone/contenttypes/profiles/default/metadata.xml b/src/design/plone/contenttypes/profiles/default/metadata.xml index dca4192f..11b36959 100644 --- a/src/design/plone/contenttypes/profiles/default/metadata.xml +++ b/src/design/plone/contenttypes/profiles/default/metadata.xml @@ -1,6 +1,6 @@ - 7310 + 7311 profile-redturtle.bandi:default profile-collective.venue:default diff --git a/src/design/plone/contenttypes/tests/test_substructure_creation.py b/src/design/plone/contenttypes/tests/test_substructure_creation.py index 1991a0dc..b6b6357c 100644 --- a/src/design/plone/contenttypes/tests/test_substructure_creation.py +++ b/src/design/plone/contenttypes/tests/test_substructure_creation.py @@ -222,6 +222,8 @@ def test_persona_substructure_created(self): - variazione-situazione-patrimoniale" "altre-cariche - incarichi - altri-documenti + - dichiarazione-insussistenza-cause-di-inconferibilita-e-incompatibilita + - emolumenti-complessivi-percepiti-a-carico-della-finanza-pubblica """ item = api.content.create( container=self.portal, @@ -241,6 +243,8 @@ def test_persona_substructure_created(self): "altre-cariche", "incarichi", "altri-documenti", + "dichiarazione-insussistenza-cause-di-inconferibilita-e-incompatibilita", + "emolumenti-complessivi-percepiti-a-carico-della-finanza-pubblica", ], ) diff --git a/src/design/plone/contenttypes/upgrades/configure.zcml b/src/design/plone/contenttypes/upgrades/configure.zcml index 3abca64c..fb8dbbb1 100644 --- a/src/design/plone/contenttypes/upgrades/configure.zcml +++ b/src/design/plone/contenttypes/upgrades/configure.zcml @@ -927,4 +927,11 @@ destination="7310" handler=".to_730x.to_7310" /> + diff --git a/src/design/plone/contenttypes/upgrades/to_730x.py b/src/design/plone/contenttypes/upgrades/to_730x.py index 9fe9c080..ed893cd8 100644 --- a/src/design/plone/contenttypes/upgrades/to_730x.py +++ b/src/design/plone/contenttypes/upgrades/to_730x.py @@ -4,7 +4,7 @@ from design.plone.contenttypes.utils import create_default_blocks from plone import api from Products.CMFPlone.interfaces import ISelectableConstrainTypes - +from design.plone.contenttypes.events.common import createStructure import logging import transaction @@ -183,3 +183,38 @@ def to_7310(context): if behavior not in behaviors: behaviors.append(behavior) portal_type.behaviors = tuple(behaviors) + + +def to_7311(context): + logger.info("Add new folder to Persona CT") + mapping1 = { + "content": [ + { + "id": "dichiarazione-insussistenza-cause-di-inconferibilita-e-incompatibilita", # noqa + "title": "Dichiarazione insussistenza cause di inconferibilità e" + " incompatibilità", + "allowed_types": ("File",), + }, + ] + } + mapping2 = { + "content": [ + { + "id": "emolumenti-complessivi-percepiti-a-carico-della-finanza-pubblica", # noqa + "title": "Emolumenti complessivi percepiti a carico della finanza" + " pubblica", + "allowed_types": ("File",), + }, + ] + } + pc = api.portal.get_tool(name="portal_catalog") + brains = pc(portal_type="Persona") + for brain in brains: + persona = brain.getObject() + if "dichiarazione-insussistenza-cause-di-inconferibilita-e-incompatibilita" not in persona.keys(): + createStructure(persona, mapping1) + logger.info("Add dichiarazione insussistenza for {}".format(persona.title)) + if "emolumenti-complessivi-percepiti-a-carico-della-finanza-pubblica" not in persona.keys(): + createStructure(persona, mapping2) + logger.info("Add emolumenti complessivi for {}".format(persona.title)) + raise From ff414d37bf70241fc71b62c336aadd87002de8ab Mon Sep 17 00:00:00 2001 From: Luca Bellenghi Date: Thu, 20 Mar 2025 12:54:51 +0100 Subject: [PATCH 2/2] fix upgrade --- .../plone/contenttypes/profiles/default/metadata.xml | 2 +- src/design/plone/contenttypes/upgrades/to_730x.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/design/plone/contenttypes/profiles/default/metadata.xml b/src/design/plone/contenttypes/profiles/default/metadata.xml index 4ff1a035..61da81a9 100644 --- a/src/design/plone/contenttypes/profiles/default/metadata.xml +++ b/src/design/plone/contenttypes/profiles/default/metadata.xml @@ -1,6 +1,6 @@ - 7312 + 7314 profile-redturtle.bandi:default profile-collective.venue:default diff --git a/src/design/plone/contenttypes/upgrades/to_730x.py b/src/design/plone/contenttypes/upgrades/to_730x.py index 10bb758b..185cfc9a 100644 --- a/src/design/plone/contenttypes/upgrades/to_730x.py +++ b/src/design/plone/contenttypes/upgrades/to_730x.py @@ -225,10 +225,15 @@ def to_7314(context): brains = pc(portal_type="Persona") for brain in brains: persona = brain.getObject() - if "dichiarazione-insussistenza-cause-di-inconferibilita-e-incompatibilita" not in persona.keys(): + if ( + "dichiarazione-insussistenza-cause-di-inconferibilita-e-incompatibilita" + not in persona.keys() + ): createStructure(persona, mapping1) logger.info("Add dichiarazione insussistenza for {}".format(persona.title)) - if "emolumenti-complessivi-percepiti-a-carico-della-finanza-pubblica" not in persona.keys(): + if ( + "emolumenti-complessivi-percepiti-a-carico-della-finanza-pubblica" + not in persona.keys() + ): createStructure(persona, mapping2) logger.info("Add emolumenti complessivi for {}".format(persona.title)) - raise