diff --git a/product/ERP5/Document/Predicate.py b/product/ERP5/Document/Predicate.py index 78e564fd9ea54c6b72539e8c7c2b8af723fa1c4c..d90f8847e91ab74a6cdfeb5e923f75e9b9260ef0 100755 --- a/product/ERP5/Document/Predicate.py +++ b/product/ERP5/Document/Predicate.py @@ -94,36 +94,36 @@ class Predicate(Folder): if not hasattr(aq_base(self), '_identity_criterion'): self._identity_criterion = {} self._range_criterion = {} -# LOG('PREDICATE TEST', 0, -# 'testing %s on context of %s' % \ -# (self.getRelativeUrl(), context.getRelativeUrl())) +# LOG('PREDICATE TEST', 0, +# 'testing %s on context of %s' % \ +# (self.getRelativeUrl(), context.getRelativeUrl())) for property, value in self._identity_criterion.items(): result = result and (context.getProperty(property) == value) -# LOG('predicate test', 0, -# '%s after prop %s : %s == %s' % \ -# (result, property, context.getProperty(property), value)) +# LOG('predicate test', 0, +# '%s after prop %s : %s == %s' % \ +# (result, property, context.getProperty(property), value)) for property, (min, max) in self._range_criterion.items(): value = context.getProperty(property) if min is not None: result = result and (value >= min) -# LOG('predicate test', 0, -# '%s after prop %s : %s >= %s' % \ -# (result, property, value, min)) +# LOG('predicate test', 0, +# '%s after prop %s : %s >= %s' % \ +# (result, property, value, min)) if max is not None: result = result and (value < max) -# LOG('predicate test', 0, -# '%s after prop %s : %s < %s' % \ -# (result, property, value, max)) +# LOG('predicate test', 0, +# '%s after prop %s : %s < %s' % \ +# (result, property, value, max)) multimembership_criterion_base_category_list = \ self.getMultimembershipCriterionBaseCategoryList() membership_criterion_base_category_list = \ self.getMembershipCriterionBaseCategoryList() tested_base_category = {} -# LOG('predicate test', 0, -# 'categories will be tested in multi %s single %s as %s' % \ -# (multimembership_criterion_base_category_list, -# membership_criterion_base_category_list, -# self.getMembershipCriterionCategoryList())) +# LOG('predicate test', 0, +# 'categories will be tested in multi %s single %s as %s' % \ +# (multimembership_criterion_base_category_list, +# membership_criterion_base_category_list, +# self.getMembershipCriterionCategoryList())) membership_criterion_category_list = \ self.getMembershipCriterionCategoryList() if tested_base_category_list is not None: @@ -142,26 +142,26 @@ class Predicate(Folder): if (bc in multimembership_criterion_base_category_list): tested_base_category[bc] = tested_base_category[bc] and \ context.isMemberOf(c) -# LOG('predicate test', 0, -# '%s after multi membership to %s' % \ -# (tested_base_category[bc], c)) +# LOG('predicate test', 0, +# '%s after multi membership to %s' % \ +# (tested_base_category[bc], c)) elif (bc in membership_criterion_base_category_list): tested_base_category[bc] = tested_base_category[bc] or \ context.isMemberOf(c) -# LOG('predicate test', 0, -# '%s after single membership to %s' % \ -# (tested_base_category[bc], c)) +# LOG('predicate test', 0, +# '%s after single membership to %s' % \ +# (tested_base_category[bc], c)) result = result and (0 not in tested_base_category.values()) -# LOG('predicate test', 0, -# '%s after category %s ' % (result, tested_base_category.items())) +# LOG('predicate test', 0, +# '%s after category %s ' % (result, tested_base_category.items())) # Test method calls test_method_id = self.getTestMethodId() if (test_method_id is not None) and result: method = getattr(context,test_method_id) result = result and method() -# LOG('predicate test', 0, -# '%s after method %s ' % (result, test_method_id)) +# LOG('predicate test', 0, +# '%s after method %s ' % (result, test_method_id)) # XXX Add here additional method calls return result @@ -385,7 +385,9 @@ class Predicate(Folder): as a trick to simplify the development of Predicates and forms. """ new_membership_criterion_category_list = list(self.getMembershipCriterionCategoryList()) + new_membership_criterion_base_category_list = list(self.getMembershipCriterionBaseCategoryList()) new_multimembership_criterion_base_category_list = list(self.getMultimembershipCriterionBaseCategoryList()) + for base_category in multimembership_criterion_base_category_list: category_list = self.getProperty(base_category + '_list') if category_list is not None and len(category_list)>0: @@ -393,6 +395,7 @@ class Predicate(Folder): new_membership_criterion_category_list.append(base_category + '/' + category) if base_category not in new_multimembership_criterion_base_category_list: new_multimembership_criterion_base_category_list.append(base_category) + for base_category in membership_criterion_base_category_list: category_list = self.getProperty(base_category + '_list') if category_list is not None and len(category_list)>0: @@ -400,6 +403,7 @@ class Predicate(Folder): new_membership_criterion_category_list.append(base_category + '/' + category) if base_category not in new_membership_criterion_base_category_list: new_membership_criterion_base_category_list.append(base_category) + new_criterion_property_list = list(self.getCriterionPropertyList()) identity_criterion = getattr(self,'_identity_criterion',{}) range_criterion = getattr(self,'_range_criterion',{}) @@ -421,6 +425,7 @@ class Predicate(Folder): # we have a predicate with local properties new_self = self.asContext( membership_criterion_category=new_membership_criterion_category_list, + membership_criterion_base_category=new_membership_criterion_base_category_list, multimembership_criterion_base_category=new_multimembership_criterion_base_category_list, criterion_property_list=new_criterion_property_list, _identity_criterion=identity_criterion,