From b5cb7eb12d82723266e2fd0dd3d82fe767ee2642 Mon Sep 17 00:00:00 2001
From: Alexandre Boeglin <alex@nexedi.com>
Date: Tue, 31 May 2005 10:24:25 +0000
Subject: [PATCH] Fixed bugs in edit, asPredicate.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@3120 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/PredicateGroup.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/product/ERP5/Document/PredicateGroup.py b/product/ERP5/Document/PredicateGroup.py
index 1346b8cc15..62a51ad6e0 100755
--- a/product/ERP5/Document/PredicateGroup.py
+++ b/product/ERP5/Document/PredicateGroup.py
@@ -115,12 +115,15 @@ class PredicateGroup(Folder, Predicate):
       self._range_criterion = {}
     for property, value in self._identity_criterion.items():
       result = result and (context.getProperty(property) == value)
+      #LOG('context.getProperty', 0, repr(( 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('self._range_criterion.items min', 0, repr(( result, property, context.getProperty(property), min )))
       if max is not None:
         result = result and (value < max)
+        #LOG('self._range_criterion.items max', 0, repr(( result, property, context.getProperty(property), max )))
     multimembership_criterion_base_category_list = self.getMultimembershipCriterionBaseCategoryList()
     membership_criterion_base_category_list = self.getMembershipCriterionBaseCategoryList()
     tested_base_category = {}
@@ -135,11 +138,13 @@ class PredicateGroup(Folder, Predicate):
       elif bc in membership_criterion_base_category_list:
         tested_base_category[bc] = tested_base_category[bc] or context.isMemberOf(c)
     result = result and (0 not in tested_base_category.values())
+    #LOG('self.getMembershipCriterionCategoryList', 0, repr(( 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('self.getTestMethodId', 0, repr(( result, test_method_id, method() )))
     # XXX Add here additional method calls
     return result
 
@@ -190,6 +195,9 @@ class PredicateGroup(Folder, Predicate):
 
   security.declareProtected( Permissions.ModifyPortalContent, 'edit' )
   def edit(self, **kwd) :
+    if not hasattr(aq_base(self), '_identity_criterion'):
+      self._identity_criterion = {}
+      self._range_criterion = {}
     if 'criterion_property_list' in kwd.keys() :
       criterion_property_list = kwd['criterion_property_list']
       identity_criterion = {}
@@ -268,7 +276,7 @@ class PredicateGroup(Folder, Predicate):
           property_max = property + '_range_max'
           if hasattr(self,'get%s' % convertToUpperCase(property)) \
             and self.getProperty(property) is not None:
-            identity_criterion['property'] = self.getProperty(property)
+            identity_criterion[property] = self.getProperty(property)
           elif hasattr(self,'get%s' % convertToUpperCase(property_min)):
             min = self.getProperty(property_min)
             max = self.getProperty(property_max)
-- 
2.30.9