From 4d86cd6cb0c6d7471721f4724159c5c25f3ba1a2 Mon Sep 17 00:00:00 2001
From: Yoshinori Okuji <yo@nexedi.com>
Date: Fri, 13 Aug 2010 05:29:40 +0000
Subject: [PATCH] Revert the previous change partly, because searchRuleList
 omits invalidated rules, so even if searchRuleList does not return a rule, it
 can be due to the validation state instead of the result of a test method.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@37781 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/SimulationMovement.py | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/product/ERP5/Document/SimulationMovement.py b/product/ERP5/Document/SimulationMovement.py
index 32b390b83c..e8f17dd78e 100644
--- a/product/ERP5/Document/SimulationMovement.py
+++ b/product/ERP5/Document/SimulationMovement.py
@@ -245,19 +245,18 @@ class SimulationMovement(Movement, PropertyRecordableMixin):
         sort_order='descending'):
       reference = rule.getReference()
       if reference:
-        applicable_rule_dict.setdefault(reference, []).append(rule)
+        applicable_rule_dict.setdefault(reference, rule)
 
     for applied_rule in list(self.objectValues()):
       rule = applied_rule.getSpecialiseValue()
-      if rule in applicable_rule_dict.get(rule.getReference(), ()) \
-              or applied_rule._isTreeDelivered():
+      if rule.test(self) or applied_rule._isTreeDelivered():
         applied_rule_dict[rule.getReference()] = applied_rule
       else:
         self._delObject(applied_rule.getId())
 
-    for reference, rule_list in applicable_rule_dict.iteritems():
+    for reference, rule in applicable_rule_dict.iteritems():
       if reference not in applied_rule_dict:
-        applied_rule = rule_list[0].constructNewAppliedRule(self, **kw)
+        applied_rule = rule.constructNewAppliedRule(self, **kw)
         applied_rule_dict[reference] = applied_rule
 
     self.setCausalityState('expanded')
-- 
2.30.9