From ef3e9913e4844504e23ccf93dbfed93d3ffa891b Mon Sep 17 00:00:00 2001 From: Jean-Paul Smets <jp@nexedi.com> Date: Fri, 15 Sep 2006 15:33:45 +0000 Subject: [PATCH] Supports reordering of entries git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@10010 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Form/MultiRelationField.py | 27 +++++++------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/product/ERP5Form/MultiRelationField.py b/product/ERP5Form/MultiRelationField.py index 73f825d92c..40284ee43c 100644 --- a/product/ERP5Form/MultiRelationField.py +++ b/product/ERP5Form/MultiRelationField.py @@ -48,24 +48,7 @@ SUB_FIELD_ID = 'relation' ITEM_ID = 'item' NO_VALUE = '??? (No Value)' -def checkSameKeys(a , b): - """ - Checks if the two lists contain - the same values - """ - same = 1 - for ka in a: - if (not ka in b) and (ka != ''): - same = 0 - break - if same: - for kb in b: - if (not kb in a) and (kb != ''): - same = 0 - break - return same - -class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget, +class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget, Widget.TextWidget, Widget.ListWidget): """ @@ -457,7 +440,7 @@ class MultiRelationEditor: else: set_method_name = '_set%sValueList' % \ convertToUpperCase(self.base_category) - getattr(o, set_method_name)(relation_object_list, + getattr(o, set_method_name)(relation_object_list, portal_type=self.portal_type_list) allow_class(MultiRelationEditor) @@ -502,7 +485,8 @@ class MultiRelationStringFieldValidator(Validator.LinesValidator): if isinstance(current_value_list, StringType): current_value_list = [current_value_list] # Check value list - if not (checkSameKeys(value_list, current_value_list)): + if value_list != current_value_list: # Changes in the order or in the number of occurences + # must be taken into account for i in range(len(value_list)): value = value_list[i] relation_field_id = field.generate_subfield_key("%s_%s" % \ @@ -530,12 +514,14 @@ class MultiRelationStringFieldValidator(Validator.LinesValidator): catalog_index = field.get_value('catalog_index') portal_type_list = [x[0] for x in field.get_value('portal_type')] portal_catalog = getToolByName(field, 'portal_catalog') + #################################### # Check list input #################################### relation_field_id = field.generate_subfield_key("%s" % \ SUB_FIELD_ID, key=key) relation_uid_list = REQUEST.get(relation_field_id, None) + #################################### # User clicked on the wheel #################################### @@ -567,6 +553,7 @@ class MultiRelationStringFieldValidator(Validator.LinesValidator): display_text = message else: display_text = 'Object has been deleted' + ################################ # Modify if user modified his value ################################ -- 2.30.9