[Erp5-report] r34606 yusei - /erp5/trunk/products/ERP5Type/tests/utils.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Apr 16 06:48:52 CEST 2010


Author: yusei
Date: Fri Apr 16 06:48:51 2010
New Revision: 34606

URL: http://svn.erp5.org?rev=34606&view=rev
Log:
Support three dimensional table. No need to hardcode dimension
number in cell_dict_list parameter.

Modified:
    erp5/trunk/products/ERP5Type/tests/utils.py

Modified: erp5/trunk/products/ERP5Type/tests/utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/utils.py?rev=34606&r1=34605&r2=34606&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/utils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/utils.py [utf8] Fri Apr 16 06:48:51 2010
@@ -358,7 +358,6 @@
     dicts in cell_dict_list can have following keys:
      - base_id
      - cell_range_kw
-     - dimension
      - mapped_value_argument_list
      - table
 
@@ -368,13 +367,34 @@
                      'DeliveryLine_asCellRange',
                      ({'base_id':'movement',
                        'mapped_value_argument_list':('quantity',),
-                       'dimension':1,
                        'table':(('product_packing/package', 1),
                                 ('product_packing/case'   , 1),
                                )
                        },
                       )
                      )
+    # Table structure examples
+    one_dimension = (
+      (line, mapped_value),
+      (line, mapped_value),
+      )
+    two_dimension = (
+      (        column,         column,),
+      (line,   mapped_value,   mapped_value,),
+      (line,   mapped_value,   mapped_value,),
+      )
+    three_dimension = (
+      ((tab,),
+      (        column,         column,),
+      (line,   mapped_value,   mapped_value,),
+      (line,   mapped_value,   mapped_value,),
+      ),
+      ((tab,),
+      (        column,         column,),
+      (line,   mapped_value,   mapped_value,),
+      (line,   mapped_value,   mapped_value,),
+      )
+      )
   """
   def get_range_id_list(range_list):
     if not range_list:
@@ -398,7 +418,6 @@
                         for cell_range in cell_range_list]
                       )
 
-    dimension = cell_dict['dimension']
     mapped_value_argument_list = cell_dict['mapped_value_argument_list']
     def getMappedValueDict(item):
       if len(mapped_value_argument_list)==1:
@@ -409,20 +428,36 @@
           result[argument_name] = item[index]
         return result
 
+    # verify table structure to know dimension.
     table = cell_dict['table']
+    if len([True for item in table if len(item)!=2])==0:
+      dimension = 1
+    elif len(table)>1 and (len(table[0])+1)==len(table[1]):
+      dimension = 2
+    elif isinstance(table[0][0], (tuple, list)):
+      dimension = 3
+    else:
+      raise RuntimeError, "Unsupported table structure!"
+
+    data_list = []
     if dimension==1:
-      data_list = []
       for table_line in table:
         data_list.append(([table_line[0]], getMappedValueDict(table_line[1])))
     elif dimension==2:
       column = table[0]
-      data_list = []
       for table_line in table[1:]:
         row = table_line[0]
         for index, item in enumerate(table_line[1:]):
           data_list.append(([row, column[index]], getMappedValueDict(item)))
     elif dimension==3:
-      raise NotImplementedError
+      table_list = table
+      for table in table_list:
+        tab = table[0][0]
+        column = table[1]
+        for table_line in table[2:]:
+          row = table_line[0]
+          for index, item in enumerate(table_line[1:]):
+            data_list.append(([row, column[index], tab], getMappedValueDict(item)))
 
     for category_list, mapped_value_dict in data_list:
       cell = line.newCell(portal_type=cell_type,




More information about the Erp5-report mailing list