From 69bcb78858c881c0b4a12d60f70a057880ba2635 Mon Sep 17 00:00:00 2001 From: Wiemboudabous Date: Mon, 13 Apr 2026 15:50:35 +0200 Subject: [PATCH 1/3] Move decisional delay vocabulary from code to configuration --- .../urban/content/licence/RoadDecree.py | 2 +- .../urban/locales/fr/LC_MESSAGES/urban.po | 3 ++ src/Products/urban/migration/update_290.py | 32 +++++++++++++++++++ .../urban/migration/upgrades_290.zcml | 8 +++++ .../urban/profiles/default/metadata.xml | 4 +-- .../profiles/extra/config_default_values.py | 10 ++++++ 6 files changed, 56 insertions(+), 3 deletions(-) diff --git a/src/Products/urban/content/licence/RoadDecree.py b/src/Products/urban/content/licence/RoadDecree.py index c2accdcc8..c8d0beec4 100644 --- a/src/Products/urban/content/licence/RoadDecree.py +++ b/src/Products/urban/content/licence/RoadDecree.py @@ -121,7 +121,7 @@ def get_raw_voc(self, context, licence_type): label=_("urban_label_decisional_delay", default="DecisionalDelay"), ), schemata="urban_analysis", - vocabulary="list_decisional_delay", + vocabulary=UrbanVocabulary("decisionaldelay", inUrbanConfig=True), default_method="getDefaultValue", ), ), diff --git a/src/Products/urban/locales/fr/LC_MESSAGES/urban.po b/src/Products/urban/locales/fr/LC_MESSAGES/urban.po index 2e7d7de42..ba6d22c89 100644 --- a/src/Products/urban/locales/fr/LC_MESSAGES/urban.po +++ b/src/Products/urban/locales/fr/LC_MESSAGES/urban.po @@ -5718,3 +5718,6 @@ msgstr "Partie de l'immeuble concernée" msgid "urban_label_buildingType" msgstr "Nature de l'immeuble" + +msgid "decisionaldelay_folder_title" +msgstr " Délai de décision du conseil " \ No newline at end of file diff --git a/src/Products/urban/migration/update_290.py b/src/Products/urban/migration/update_290.py index ea2af7684..e1f361776 100644 --- a/src/Products/urban/migration/update_290.py +++ b/src/Products/urban/migration/update_290.py @@ -4,6 +4,9 @@ from Products.urban import UrbanMessage as _ from Products.urban.migration.utils import cook_javascript_resources from Products.urban.utils import moveElementAfter +from Products.urban.profiles.extra.config_default_values import default_values +from Products.urban.setuphandlers import createFolderDefaultValues +from Products.urban.setuphandlers import createVocabularyFolder from dm.historical import getHistory from imio.helpers.catalog import reindexIndexes from plone import api @@ -325,3 +328,32 @@ def setup_index_referenceFT(context): reindexIndexes(None, ["referenceFT"]) logger.info("upgrade step done!") + +def extract_decision_delay_vocabulary(context): + """ """ + logger = logging.getLogger( + "urban: Add new vocabulary for investigation_radius field" + ) + logger.info("starting upgrade steps") + + container = api.portal.get_tool("portal_urban") + + roaddecree_folder = getattr(container, "roaddecree", None) + + if roaddecree_folder is None: + return + delay_config = default_values["RoadDecree"][ + "decisionaldelay" + ] + allowedtypes = delay_config[0] + delay_config = createVocabularyFolder( + roaddecree_folder, "decisionaldelay", context, allowedtypes + ) + createFolderDefaultValues( + delay_config, + default_values["RoadDecree"]["decisionaldelay"][1:], + default_values["RoadDecree"]["decisionaldelay"][0], + ) + + + logger.info("migration step done!") \ No newline at end of file diff --git a/src/Products/urban/migration/upgrades_290.zcml b/src/Products/urban/migration/upgrades_290.zcml index 55e881a42..874078eda 100644 --- a/src/Products/urban/migration/upgrades_290.zcml +++ b/src/Products/urban/migration/upgrades_290.zcml @@ -75,5 +75,13 @@ destination="2908" handler=".update_290.setup_index_referenceFT" profile="Products.urban:default" /> + diff --git a/src/Products/urban/profiles/default/metadata.xml b/src/Products/urban/profiles/default/metadata.xml index 69feb0553..0a6c6cc3e 100644 --- a/src/Products/urban/profiles/default/metadata.xml +++ b/src/Products/urban/profiles/default/metadata.xml @@ -1,7 +1,7 @@ - 2908 + 2909 profile-Products.urban:preinstall - + \ No newline at end of file diff --git a/src/Products/urban/profiles/extra/config_default_values.py b/src/Products/urban/profiles/extra/config_default_values.py index d4700af46..519942aef 100644 --- a/src/Products/urban/profiles/extra/config_default_values.py +++ b/src/Products/urban/profiles/extra/config_default_values.py @@ -3949,4 +3949,14 @@ }, ], }, + "RoadDecree":{ + "decisionaldelay": [ + "UrbanVocabularyTerm", + {"id": "ukn", "title": "unknown"}, + {"id": "75j", "title": "75 days"}, + {"id": "105j", "title": "105 days"}, + {"id": "150j", "title": "150 days"}, + {"id": "210j", "title": "210 days"}, + + ],}, } From e1a289fa4347dc7240c6ab9ee2adbec69d9fb82c Mon Sep 17 00:00:00 2001 From: Wiemboudabous Date: Mon, 13 Apr 2026 15:50:35 +0200 Subject: [PATCH 2/3] Move decisional delay vocabulary from code to configuration --- .../urban/content/licence/RoadDecree.py | 2 +- .../urban/locales/fr/LC_MESSAGES/urban.po | 3 ++ src/Products/urban/migration/update_290.py | 34 +++++++++++++++++++ .../urban/migration/upgrades_290.zcml | 11 +++++- .../urban/profiles/default/metadata.xml | 2 +- .../profiles/extra/config_default_values.py | 10 ++++++ 6 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/Products/urban/content/licence/RoadDecree.py b/src/Products/urban/content/licence/RoadDecree.py index c2accdcc8..c8d0beec4 100644 --- a/src/Products/urban/content/licence/RoadDecree.py +++ b/src/Products/urban/content/licence/RoadDecree.py @@ -121,7 +121,7 @@ def get_raw_voc(self, context, licence_type): label=_("urban_label_decisional_delay", default="DecisionalDelay"), ), schemata="urban_analysis", - vocabulary="list_decisional_delay", + vocabulary=UrbanVocabulary("decisionaldelay", inUrbanConfig=True), default_method="getDefaultValue", ), ), diff --git a/src/Products/urban/locales/fr/LC_MESSAGES/urban.po b/src/Products/urban/locales/fr/LC_MESSAGES/urban.po index 2e7d7de42..ba6d22c89 100644 --- a/src/Products/urban/locales/fr/LC_MESSAGES/urban.po +++ b/src/Products/urban/locales/fr/LC_MESSAGES/urban.po @@ -5718,3 +5718,6 @@ msgstr "Partie de l'immeuble concernée" msgid "urban_label_buildingType" msgstr "Nature de l'immeuble" + +msgid "decisionaldelay_folder_title" +msgstr " Délai de décision du conseil " \ No newline at end of file diff --git a/src/Products/urban/migration/update_290.py b/src/Products/urban/migration/update_290.py index 9010801e0..5ff86a8ba 100644 --- a/src/Products/urban/migration/update_290.py +++ b/src/Products/urban/migration/update_290.py @@ -4,7 +4,13 @@ from Products.urban import UrbanMessage as _ from Products.urban.migration.utils import cook_javascript_resources from Products.urban.utils import moveElementAfter +<<<<<<< HEAD from Products.urban.setuphandlers import set_licence_folder_security +======= +from Products.urban.profiles.extra.config_default_values import default_values +from Products.urban.setuphandlers import createFolderDefaultValues +from Products.urban.setuphandlers import createVocabularyFolder +>>>>>>> 69bcb7885 ( Move decisional delay vocabulary from code to configuration) from dm.historical import getHistory from imio.helpers.catalog import reindexIndexes from plone import api @@ -362,3 +368,31 @@ def update_folder_manager_notice(context): notice_folder_manager.reindexObject() logger.info("manageableLicences updated for notice FolderManager") +def extract_decision_delay_vocabulary(context): + """ """ + logger = logging.getLogger( + "urban: Extract decision delay vocabulary from code" + ) + logger.info("starting upgrade steps") + + container = api.portal.get_tool("portal_urban") + + roaddecree_folder = getattr(container, "roaddecree", None) + + if roaddecree_folder is None: + return + delay_config = default_values["RoadDecree"][ + "decisionaldelay" + ] + allowedtypes = delay_config[0] + delay_config = createVocabularyFolder( + roaddecree_folder, "decisionaldelay", context, allowedtypes + ) + createFolderDefaultValues( + delay_config, + default_values["RoadDecree"]["decisionaldelay"][1:], + default_values["RoadDecree"]["decisionaldelay"][0], + ) + + + logger.info("migration step done!") diff --git a/src/Products/urban/migration/upgrades_290.zcml b/src/Products/urban/migration/upgrades_290.zcml index d795b1e9c..42e74eb0a 100644 --- a/src/Products/urban/migration/upgrades_290.zcml +++ b/src/Products/urban/migration/upgrades_290.zcml @@ -83,7 +83,7 @@ destination="2909" handler=".update_290.fix_housing_roaddecree" profile="Products.urban:default" /> - + + + diff --git a/src/Products/urban/profiles/default/metadata.xml b/src/Products/urban/profiles/default/metadata.xml index b59bef411..f00f21646 100644 --- a/src/Products/urban/profiles/default/metadata.xml +++ b/src/Products/urban/profiles/default/metadata.xml @@ -1,6 +1,6 @@ - 2910 + 2911 profile-Products.urban:preinstall diff --git a/src/Products/urban/profiles/extra/config_default_values.py b/src/Products/urban/profiles/extra/config_default_values.py index d4700af46..519942aef 100644 --- a/src/Products/urban/profiles/extra/config_default_values.py +++ b/src/Products/urban/profiles/extra/config_default_values.py @@ -3949,4 +3949,14 @@ }, ], }, + "RoadDecree":{ + "decisionaldelay": [ + "UrbanVocabularyTerm", + {"id": "ukn", "title": "unknown"}, + {"id": "75j", "title": "75 days"}, + {"id": "105j", "title": "105 days"}, + {"id": "150j", "title": "150 days"}, + {"id": "210j", "title": "210 days"}, + + ],}, } From 1547900add159ed7208f66372a0e73be3c856644 Mon Sep 17 00:00:00 2001 From: Wiemboudabous Date: Mon, 20 Apr 2026 10:45:04 +0200 Subject: [PATCH 3/3] Extract the decisional delay vocabulary from the code --- news/URB-3487.feature | 2 ++ .../urban/content/licence/RoadDecree.py | 11 ---------- .../urban/locales/fr/LC_MESSAGES/urban.po | 20 ------------------- .../profiles/extra/config_default_values.py | 10 +++++----- 4 files changed, 7 insertions(+), 36 deletions(-) create mode 100644 news/URB-3487.feature diff --git a/news/URB-3487.feature b/news/URB-3487.feature new file mode 100644 index 000000000..0b7306b4b --- /dev/null +++ b/news/URB-3487.feature @@ -0,0 +1,2 @@ +Extract the “decisional delay” vocabulary from the code. +[WBoudabous] \ No newline at end of file diff --git a/src/Products/urban/content/licence/RoadDecree.py b/src/Products/urban/content/licence/RoadDecree.py index c8d0beec4..f46cd56d7 100644 --- a/src/Products/urban/content/licence/RoadDecree.py +++ b/src/Products/urban/content/licence/RoadDecree.py @@ -284,17 +284,6 @@ def listProcedureChoices(self): ) return DisplayList(vocab) - security.declarePublic("list_decisional_delay") - - def list_decisional_delay(self): - vocabulary = ( - ("ukn", _("unknown")), - ("75j", _("75 days")), - ("105j", _("105 days")), - ("150j", _("150 days")), - ("210j", _("210 days")), - ) - return DisplayList(vocabulary) def get_decisional_delays(self, *values): selection = [v["val"] for v in values if v["selected"]] diff --git a/src/Products/urban/locales/fr/LC_MESSAGES/urban.po b/src/Products/urban/locales/fr/LC_MESSAGES/urban.po index ba6d22c89..72cf3afc2 100644 --- a/src/Products/urban/locales/fr/LC_MESSAGES/urban.po +++ b/src/Products/urban/locales/fr/LC_MESSAGES/urban.po @@ -36,30 +36,14 @@ msgstr "%s_folder_title" msgid "%s_urbanconfig_title" msgstr "%s_urbanconfig_title" -#: ../content/licence/RoadDecree.py:288 -msgid "105 days" -msgstr "105 jours" - -#: ../content/licence/RoadDecree.py:289 -msgid "150 days" -msgstr "150 jours" - #: ../content/licence/ExplosivesPossession.py:140 msgid "1st class" msgstr "1ère classe : Collège provincial" -#: ../content/licence/RoadDecree.py:290 -msgid "210 days" -msgstr "210 jours" - #: ../content/licence/ExplosivesPossession.py:141 msgid "2nd class" msgstr "2ème classe : Collège communal" -#: ../content/licence/RoadDecree.py:287 -msgid "75 days" -msgstr "75 jours" - #: ../contentrules/event_type.py:70 msgid "A Event type condition makes the rule apply only if Event type correspond to the one from the context." msgstr "Une condition de type d'événement rend la règle applicable uniquement si le type d'événement correspond à celui du contexte." @@ -2752,10 +2736,6 @@ msgstr "Par" msgid "uniquelicence_urbanconfig_title" msgstr "Paramètres des permis uniques" -#: ../content/licence/RoadDecree.py:286 -msgid "unknown" -msgstr "Non déterminé" - msgid "unknown_worktype_on_licence" msgstr "nature des travaux ${worktype} inconnue sur le permis ${reference}" diff --git a/src/Products/urban/profiles/extra/config_default_values.py b/src/Products/urban/profiles/extra/config_default_values.py index 519942aef..c03a1314f 100644 --- a/src/Products/urban/profiles/extra/config_default_values.py +++ b/src/Products/urban/profiles/extra/config_default_values.py @@ -3952,11 +3952,11 @@ "RoadDecree":{ "decisionaldelay": [ "UrbanVocabularyTerm", - {"id": "ukn", "title": "unknown"}, - {"id": "75j", "title": "75 days"}, - {"id": "105j", "title": "105 days"}, - {"id": "150j", "title": "150 days"}, - {"id": "210j", "title": "210 days"}, + {"id": "ukn", "title": "Non déterminé"}, + {"id": "75j", "title": "75 jours"}, + {"id": "105j", "title": "105 jours"}, + {"id": "150j", "title": "150 jours"}, + {"id": "210j", "title": "210 jours"}, ],}, }