From 8158681a779974856c3b29c2851e738681836ffa Mon Sep 17 00:00:00 2001 From: Kazuhiko Shiozaki <kazuhiko@nexedi.com> Date: Tue, 19 Oct 2010 14:57:12 +0000 Subject: [PATCH] 2010-10-19 Kazuhiko * When checking duplicated selection names, we should use get_recursive_orig_value('selection_name') instead of getRecursiveTemplateField().get_value('selection_name'), because delegation for selection_name can end at any intermediate proxy field. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@39352 20353a03-c40f-0410-a6d1-a30d3c3de9de --- ...kinsTool_getDuplicateSelectionNameDict.xml | 28 +++++++++---------- bt5/erp5_forge/bt/change_log | 3 ++ bt5/erp5_forge/bt/revision | 2 +- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_toolbox/SkinsTool_getDuplicateSelectionNameDict.xml b/bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_toolbox/SkinsTool_getDuplicateSelectionNameDict.xml index 9ba3035526..de33b615fa 100644 --- a/bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_toolbox/SkinsTool_getDuplicateSelectionNameDict.xml +++ b/bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_toolbox/SkinsTool_getDuplicateSelectionNameDict.xml @@ -64,25 +64,26 @@ ok_to_share_selection_form_list = [\'Resource_viewInventory\', \'Resource_viewMo for field_path, field in skins_tool.ZopeFind(\n skins_tool, obj_metatypes=[\'ProxyField\', \'ListBox\'], search_sub=1):\n form = field.aq_parent\n - if field.meta_type == \'ProxyField\':\n - original_field = field.getRecursiveTemplateField()\n - if original_field is not None and \\\n - (original_field.meta_type != \'ListBox\' \\\n - or field.is_delegated(\'selection_name\')\n - or original_field.get_tales(\'selection_name\')!=\'\'):\n - continue\n - elif field.meta_type == \'ListBox\':\n - if field.get_tales(\'selection_name\')!=\'\':\n - continue\n # in some rare cases sharing a selection can be done intentional so avoid them\n if form.getId() in ok_to_share_selection_form_list:\n continue\n # if the form looks like a field library, we don\'t care, because it is not used directly.\n if form.getId().endswith(\'FieldLibrary\'):\n continue\n + if field.meta_type == \'ProxyField\':\n + try:\n + if field.get_recursive_tales(\'selection_name\') != \'\':\n + continue\n + selection_name = field.get_recursive_orig_value(\'selection_name\')\n + except KeyError:\n + continue\n + elif field.meta_type == \'ListBox\':\n + if field.get_tales(\'selection_name\')!=\'\':\n + continue\n + selection_name = field.get_orig_value(\'selection_name\')\n \n selection_name_dict.setdefault(\n - field.get_value(\'selection_name\'), []).append(field_path)\n + selection_name, []).append(field_path)\n \n # leave only duplicating ones\n duplicating_selection_name_dict = {}\n @@ -138,10 +139,9 @@ return duplicating_selection_name_dict\n <string>field_path</string> <string>field</string> <string>form</string> - <string>original_field</string> - <string>None</string> - <string>duplicating_selection_name_dict</string> <string>selection_name</string> + <string>KeyError</string> + <string>duplicating_selection_name_dict</string> <string>field_list</string> <string>len</string> <string>_write_</string> diff --git a/bt5/erp5_forge/bt/change_log b/bt5/erp5_forge/bt/change_log index 3aa19bd442..21c7d1343c 100644 --- a/bt5/erp5_forge/bt/change_log +++ b/bt5/erp5_forge/bt/change_log @@ -1,3 +1,6 @@ +2010-10-19 Kazuhiko +* When checking duplicated selection names, we should use get_recursive_orig_value('selection_name') instead of getRecursiveTemplateField().get_value('selection_name'), because delegation for selection_name can end at any intermediate proxy field. + 2010-10-19 yo * When checking duplicated selection names, skip field libraries, as they don't matter. diff --git a/bt5/erp5_forge/bt/revision b/bt5/erp5_forge/bt/revision index 236c7c706d..823aeb4b44 100644 --- a/bt5/erp5_forge/bt/revision +++ b/bt5/erp5_forge/bt/revision @@ -1 +1 @@ -623 \ No newline at end of file +624 \ No newline at end of file -- 2.30.9