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