[Erp5-report] r19278 - /erp5/trunk/products/ERP5/Document/OrderBuilder.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Feb 12 17:13:10 CET 2008


Author: kazuhiko
Date: Tue Feb 12 17:13:10 2008
New Revision: 19278

URL: http://svn.erp5.org?rev=19278&view=rev
Log:
pass related_simulation_movement_path_list to after building script (if it accepts). this can be useful to reduce activity dependencies.

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

Modified: erp5/trunk/products/ERP5/Document/OrderBuilder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/OrderBuilder.py?rev=19278&r1=19277&r2=19278&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/OrderBuilder.py (original)
+++ erp5/trunk/products/ERP5/Document/OrderBuilder.py Tue Feb 12 17:13:10 2008
@@ -123,7 +123,7 @@
                        delivery_relative_url_list=delivery_relative_url_list,
                        movement_list=movement_list,**kw)
     # Call a script after building
-    self.callAfterBuildingScript(delivery_list,**kw)
+    self.callAfterBuildingScript(delivery_list, movement_list, **kw)
     # XXX Returning the delivery list is probably not necessary
     return delivery_list
 
@@ -525,12 +525,29 @@
       #simulation_movement.setDeliveryRatio(1)
       simulation_movement.edit(delivery_ratio=1)
 
-  def callAfterBuildingScript(self, delivery_list,**kw):
+  def callAfterBuildingScript(self, delivery_list, movement_list=None, **kw):
     """
       Call script on each delivery built
     """
     delivery_after_generation_script_id = \
                               self.getDeliveryAfterGenerationScriptId()
+    related_simulation_movement_path_list = \
+                              [x.getPath() for x in movement_list]
     if delivery_after_generation_script_id not in ["", None]:
       for delivery in delivery_list:
-        getattr(delivery, delivery_after_generation_script_id)()
+        script = getattr(delivery, delivery_after_generation_script_id)
+        meta_type = getattr(script, 'meta_type', None)
+        if meta_type == 'Script (Python)':
+          # check if the script accepts related_simulation_movement_path_list
+          accept_param = False
+          for param in script.params().split(','):
+            param = param.split('=', 1)[0].strip()
+            if param == 'related_simulation_movement_path_list' or param.startswith('**'):
+              accept_param = True
+              break
+          if accept_param:
+            script(related_simulation_movement_path_list=related_simulation_movement_path_list)
+          else:
+            script()
+        else:
+          script(related_simulation_movement_path_list=related_simulation_movement_path_list)




More information about the Erp5-report mailing list