From e518a093edda9759283416cfa9fa923b9624a055 Mon Sep 17 00:00:00 2001 From: Nicolas Wavrant <nicolas.wavrant@nexedi.com> Date: Wed, 2 Mar 2016 10:56:58 +0000 Subject: [PATCH] erp5_upgrader: use searchAndActivate API updating objects refering to an updated category --- .../Base_updateRelatedCategory.xml | 81 +++++++++++++++++++ ...egoryTool_checkCategoryNameConsistency.xml | 21 ++--- 2 files changed, 89 insertions(+), 13 deletions(-) create mode 100644 bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/Base_updateRelatedCategory.xml diff --git a/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/Base_updateRelatedCategory.xml b/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/Base_updateRelatedCategory.xml new file mode 100644 index 0000000000..17b01b87b8 --- /dev/null +++ b/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/Base_updateRelatedCategory.xml @@ -0,0 +1,81 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>portal = context.getPortalObject()\n +updateRelatedCategory = portal.portal_categories.updateRelatedCategory\n +\n +new_category_list = []\n +object_category_list = context.getCategoriesList()\n +\n +new_category_name = kw[\'new_category_name\']\n +old_category_name = kw[\'old_category_name\']\n +\n +for category in object_category_list:\n + new_category = updateRelatedCategory(category, old_category_name, new_category_name)\n + new_category_list.append(new_category)\n +\n +if new_category_list != object_category_list:\n + context.setCategoriesList(new_category_list)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>fixit=0, **kw</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Base_updateRelatedCategory</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/CategoryTool_checkCategoryNameConsistency.xml b/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/CategoryTool_checkCategoryNameConsistency.xml index 4d9d1dacd3..175e32c0fc 100644 --- a/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/CategoryTool_checkCategoryNameConsistency.xml +++ b/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/CategoryTool_checkCategoryNameConsistency.xml @@ -79,18 +79,13 @@ for old_category_name, new_category_name in upgrade_list:\n \n # if sensitive_portal_type_list is empty, we don\'t want to check all objects\n if fixit and sensitive_portal_type_list:\n - updateRelatedCategory = portal.portal_categories.updateRelatedCategory\n - \n - # We list objects defined by the sensitive portal types\n - for obj in portal.portal_catalog(portal_type=sensitive_portal_type_list):\n - obj = obj.getObject()\n - new_category_list = []\n - object_category_list = obj.getCategoriesList()\n - for category in object_category_list:\n - new_category = updateRelatedCategory(category, old_category_name, new_category_name)\n - new_category_list.append(new_category)\n - if new_category_list != object_category_list:\n - obj.setCategoriesList(new_category_list)\n + context.portal_catalog.searchAndActivate(\'Base_updateRelatedCategory\',\n + activate_kw=activate_kw,\n + portal_type=sensitive_portal_type_list,\n + method_kw={\'fixit\': fixit,\n + \'old_category_name\': old_category_name,\n + \'new_category_name\': new_category_name,}\n + )\n \n for portal_type in sensitive_portal_type_list:\n error_list.append(\'Portal Type %s still contains the category %s\' % (portal_type, old_category_name))\n @@ -100,7 +95,7 @@ return error_list\n </item> <item> <key> <string>_params</string> </key> - <value> <string>fixit=False, **kw</string> </value> + <value> <string>fixit=False, activate_kw={}, **kw</string> </value> </item> <item> <key> <string>id</string> </key> -- 2.30.9