diff --git a/product/ERP5/Document/PredicateGroup.py b/product/ERP5/Document/PredicateGroup.py index 36dc020395963d1b9fd5b04f1353a1ff06fa88e6..7c062ffe8f53dbbc1b14b2166e4b68d030b9d6ce 100755 --- a/product/ERP5/Document/PredicateGroup.py +++ b/product/ERP5/Document/PredicateGroup.py @@ -92,6 +92,7 @@ class PredicateGroup(Folder, Predicate): # Declarative properties property_sheets = ( PropertySheet.Base , PropertySheet.Predicate + , PropertySheet.SortIndex ) # Declarative interfaces @@ -128,7 +129,7 @@ identify a bank account.""" result = 1 if not hasattr(aq_base(self), '_identity_criterion'): self._identity_criterion = {} - self._range_criterion = {} + self._range_criterion = {} for property, value in self._identity_criterion.items(): result = result and (context.getProperty(property) == value) for property, (min, max) in self._range_criterion.items(): @@ -142,13 +143,13 @@ identify a bank account.""" tested_base_category = {} for c in self.getMembershipCriterionCategoryList(): bc = c.split('/')[0] - if not bc in tested_base_category[bc]: + if not bc in tested_base_category.keys() : tested_base_category[bc] = 0 if bc in multimembership_criterion_base_category_list: tested_base_category[bc] = tested_base_category[bc] and context.isMemberOf(c) elif bc in membership_criterion_base_category_list: - tested_base_category[bc] = tested_base_category[bc] or context.isMemberOf(c) - # XXX Add here additional method calls + tested_base_category[bc] = tested_base_category[bc] or context.isMemberOf(c) + # XXX Add here additional method calls return result and (0 not in tested_base_category.values()) def asPythonExpression(): @@ -180,7 +181,7 @@ identify a bank account.""" """ if not hasattr(aq_base(self), '_identity_criterion'): self._identity_criterion = {} - self._range_criterion = {} + self._range_criterion = {} criterion_dict = {} for p in self.getCriterionPropertyList(): criterion_dict[p] = newTempBase(self, 'new_%s' % p) @@ -192,15 +193,15 @@ identify a bank account.""" criterion_list = criterion_dict.values() criterion_list.sort() return criterion_list - + security.declareProtected( Permissions.ModifyPortalContent, 'setCriterionList' ) def setCriterion(self, property, identity=None, min=None, max=None, **kw): if not hasattr(aq_base(self), '_identity_criterion'): self._identity_criterion = {} - self._range_criterion = {} + self._range_criterion = {} self._identity_criterion[property] = identity self._range_criterion[property] = (min, max) - + # Predicate fusion method def setPredicateCategoryList(self, category_list): category_tool = aq_inner(self.portal_categories) @@ -209,7 +210,7 @@ identify a bank account.""" membership_criterion_base_category_list = [] multimembership_criterion_base_category_list = [] criterion_property_list = [] - for c in category_list: + for c in category_list: bc = c.split('/')[0] if bc in base_category_id_list: # This is a category @@ -218,7 +219,7 @@ identify a bank account.""" else: predicate_value = category_tool.resolveCategory(c) if predicate_value is not None: - criterion_property_list.extend(predicate_value.getCriterionPropertyList()) + criterion_property_list.extend(predicate_value.getCriterionPropertyList()) membership_criterion_category_list.extend( predicate_value.getMembershipCriterionCategoryList()) membership_criterion_base_category_list.extend( @@ -227,18 +228,17 @@ identify a bank account.""" predicate_value.getMultimembershipCriterionBaseCategoryList()) for p in predicate_value.getCriterionList(): self.setCriterion(p.property, identity=p.identity, min=p.min, max=p.max) - self._setCriterionPropertyList(criterion_property_list) + self._setCriterionPropertyList(criterion_property_list) self._setMembershipCriterionCategoryList(membership_criterion_category_list) self._setMembershipCriterionBaseCategoryList(membership_criterion_base_category_list) - self._setMultimembershipCriterionBaseCategoryList(multimembership_criterion_base_category_list) + self._setMultimembershipCriterionBaseCategoryList(multimembership_criterion_base_category_list) self.reindexObject() - - # Predicate handling + + # Predicate handling security.declareProtected(Permissions.AccessContentsInformation, 'asPredicate') def asPredicate(self): """ Returns a temporary Predicate based on the Resource properties """ - return self + return self - \ No newline at end of file