diff --git a/product/ERP5/Tool/DomainTool.py b/product/ERP5/Tool/DomainTool.py index 45a88a0f2a765d23d835535a22cb01b0e3f3d720..0952b15adf2b51265119edde84b8d8b2d13600d4 100644 --- a/product/ERP5/Tool/DomainTool.py +++ b/product/ERP5/Tool/DomainTool.py @@ -226,7 +226,8 @@ class DomainTool(BaseTool): # XXX FIXME method should not be public # (some users are not able to see resource's price) security.declarePublic('generateMultivaluedMappedValue') - def generateMultivaluedMappedValue(self, context, test=1, predicate_list=None, **kw): + def generateMultivaluedMappedValue(self, context, test=1, + predicate_list=None, explanation_only=0, **kw): """ We will generate a mapped value with the list of all predicates found. @@ -250,6 +251,7 @@ class DomainTool(BaseTool): 'new_mapped_value') mapped_value_property_dict = {} processed_dict = {} + explanation_dict = {} # Look for each property the first predicate with unique criterion # categories which defines the property for predicate in predicate_list: @@ -258,6 +260,8 @@ class DomainTool(BaseTool): for mapped_value_property in predicate.getMappedValuePropertyList(): prop_list = processed_dict.setdefault(predicate_category_list, []) + full_prop_dict = explanation_dict.setdefault( + predicate_category_list, {}) if mapped_value_property in prop_list: # we already have one value for this (categories, property) continue @@ -265,10 +269,13 @@ class DomainTool(BaseTool): value = predicate.getProperty(mapped_value_property) if value is not None: prop_list.append(mapped_value_property) + full_prop_dict[mapped_value_property] = value mv_prop_list = \ mapped_value_property_dict.setdefault( mapped_value_property, []) mv_prop_list.append(value) + if explanation_only: + return explanation_dict # Update mapped value mapped_value = mapped_value.asContext(**mapped_value_property_dict) return mapped_value