[Erp5-report] r26535 - in /erp5/trunk/products/ERP5: Document/Delivery.py tests/testOrder.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Apr 21 09:07:41 CEST 2009


Author: kazuhiko
Date: Tue Apr 21 09:07:39 2009
New Revision: 26535

URL: http://svn.erp5.org?rev=26535&view=rev
Log:
improve _getMovementList() so as to collect all possible movement list and then filter by specified portal_type(s).

Modified:
    erp5/trunk/products/ERP5/Document/Delivery.py
    erp5/trunk/products/ERP5/tests/testOrder.py

Modified: erp5/trunk/products/ERP5/Document/Delivery.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Delivery.py?rev=26535&r1=26534&r2=26535&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Delivery.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Delivery.py [utf8] Tue Apr 21 09:07:39 2009
@@ -202,18 +202,19 @@
     def _getMovementList(self, portal_type=None, **kw):
       """
         Return a list of movements.
-      """
-      if portal_type is None:
-        portal_type = self.getPortalMovementTypeList()
+        First, we collect movements by movement type portal types, then
+        we filter the result by specified portal types.
+      """
+      movement_portal_type_list = self.getPortalMovementTypeList()
       movement_list = []
       add_movement = movement_list.append
       extend_movement = movement_list.extend
-      sub_object_list = self.objectValues(portal_type=portal_type)
+      sub_object_list = self.objectValues(portal_type=movement_portal_type_list)
       extend_sub_object = sub_object_list.extend
       append_sub_object = sub_object_list.append
       while sub_object_list:
         sub_object = sub_object_list.pop()
-        content_list = sub_object.objectValues(portal_type=portal_type)
+        content_list = sub_object.objectValues(portal_type=movement_portal_type_list)
         if sub_object.hasCellContent():
           cell_list = sub_object.getCellValueList()
           if len(cell_list) != len(content_list):
@@ -226,6 +227,12 @@
           extend_sub_object(content_list)
         else:
           add_movement(sub_object)
+      if isinstance(portal_type, (list, tuple)):
+        return [x for x in movement_list \
+                if x.getPortalType() in portal_type]
+      elif portal_type is not None:
+        return [x for x in movement_list \
+                if x.getPortalType() == portal_type]
       return movement_list
     
     security.declareProtected(Permissions.AccessContentsInformation,

Modified: erp5/trunk/products/ERP5/tests/testOrder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testOrder.py?rev=26535&r1=26534&r2=26535&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testOrder.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testOrder.py [utf8] Tue Apr 21 09:07:39 2009
@@ -2012,6 +2012,12 @@
                      len([movement
                           for movement in order.getMovementList()
                           if movement.portal_type=='Sale Order Cell']))
+    self.assertEqual(len(order.getMovementList(portal_type=['Sale Order Line',
+                                                            'Sale Order Cell'])),
+                     len([movement
+                          for movement in order.getMovementList()
+                          if movement.portal_type in ('Sale Order Line',
+                                                      'Sale Order Cell')]))
 
   def test_19b_getTotalQuantityAndPrice(self, quiet=0, run=run_all_test):
     """




More information about the Erp5-report mailing list