From 421ab3b178ad14f105e61d787d4e5cfb7dc25800 Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Mon, 19 Apr 2010 09:35:25 +0000
Subject: [PATCH] cleanup getRelatedSimulationMovementValueList() by reducing
 iterations.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@34645 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/BusinessPath.py | 30 +++++++++++++--------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/product/ERP5/Document/BusinessPath.py b/product/ERP5/Document/BusinessPath.py
index 594c34e31c..3dd3c254d3 100644
--- a/product/ERP5/Document/BusinessPath.py
+++ b/product/ERP5/Document/BusinessPath.py
@@ -374,22 +374,22 @@ class BusinessPath(Path, Predicate):
       As business sequence is not related to simulation tree need to built
       full simulation trees per applied rule
     """
+    portal_catalog = self.getPortalObject().portal_catalog
     root_applied_rule_list = []
-    delivery_simulation_movement_list = []
-    for movement in explanation.getMovementList():
-      simulation_movement_list = movement.getDeliveryRelatedValueList(
-          portal_type='Simulation Movement')
-      if len(simulation_movement_list) == 0: # for legacy simulation hierarchy
-        simulation_movement_list = movement.getOrderRelatedValueList(
-            portal_type='Simulation Movement')
-      delivery_simulation_movement_list.extend(simulation_movement_list)
-      for simulation_movement in simulation_movement_list:
-        applied_rule = simulation_movement.getRootAppliedRule()
-        if applied_rule not in root_applied_rule_list:
-          root_applied_rule_list.append(
-              simulation_movement.getRootAppliedRule())
-
-    simulation_movement_list = self.getPortalObject().portal_catalog(
+    delivery_simulation_movement_list = portal_catalog(
+      delivery_uid=[x.getUid() for x in explanation.getMovementList()])
+    # 'order' category is deprecated. it is kept for compatibility.
+    if len(delivery_simulation_movement_list) == 0:
+      delivery_simulation_movement_list = portal_catalog(
+        order_uid=[x.getUid() for x in explanation.getMovementList()])
+
+    for simulation_movement in delivery_simulation_movement_list:
+      applied_rule = simulation_movement.getRootAppliedRule()
+      if applied_rule not in root_applied_rule_list:
+        root_applied_rule_list.append(
+          simulation_movement.getRootAppliedRule())
+
+    simulation_movement_list = portal_catalog(
       portal_type='Simulation Movement', causality_uid=self.getUid(),
       path=['%s/%%' % x for x in root_applied_rule_list])
 
-- 
2.30.9