[Erp5-report] r36583 nicolas.dumazet - /erp5/trunk/products/ERP5/Document/BusinessPath.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Jun 25 12:16:51 CEST 2010


Author: nicolas.dumazet
Date: Fri Jun 25 12:16:45 2010
New Revision: 36583

URL: http://svn.erp5.org?rev=36583&view=rev
Log:
revert changes to fallback to a naive and slow but safe implementation of isBuildable

This commit alone represents a performance drop by 300% (3 times slower),
and is kept only to track changes.
The next 5 commits will improve performance, leading to an
overall 500% improvement (5 times faster than before this commit)

Modified:
    erp5/trunk/products/ERP5/Document/BusinessPath.py

Modified: erp5/trunk/products/ERP5/Document/BusinessPath.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BusinessPath.py?rev=36583&r1=36582&r2=36583&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BusinessPath.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BusinessPath.py [utf8] Fri Jun 25 12:16:45 2010
@@ -382,17 +382,20 @@ class BusinessPath(Path, Predicate):
       delivery_uid=[x.getUid() for x in explanation.getMovementList()])
 
     for simulation_movement in delivery_simulation_movement_list:
-      applied_rule = simulation_movement.getRootAppliedRule().getPath()
+      applied_rule = simulation_movement.getRootAppliedRule()
       root_applied_rule_set.add(applied_rule)
 
-    simulation_movement_list = portal_catalog(
-      portal_type='Simulation Movement', causality_uid=self.getUid(),
-      path=['%s/%%' % x for x in root_applied_rule_set])
+    simulation_movement_list = []
+    for applied_rule in root_applied_rule_set:
+      simulation_movement_list.extend(self._recurseGetValueList(
+        applied_rule, 'Simulation Movement'))
 
-    return [simulation_movement.getObject() for simulation_movement
+    self_url = self.getRelativeUrl()
+    return [simulation_movement for simulation_movement
           in simulation_movement_list
           # related with explanation
-          if self._isDeliverySimulationMovementRelated(
+          if simulation_movement.getCausality() == self_url and \
+            self._isDeliverySimulationMovementRelated(
               simulation_movement, delivery_simulation_movement_list)]
 
   def getExpectedQuantity(self, explanation, *args, **kwargs):




More information about the Erp5-report mailing list