[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