[Erp5-report] r31084 jerome - in /erp5/trunk/products/ERP5: Tool/ bootstrap/erp5_core/SkinT...
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Dec 4 16:33:32 CET 2009
Author: jerome
Date: Fri Dec 4 16:33:31 2009
New Revision: 31084
URL: http://svn.erp5.org?rev=31084&view=rev
Log:
Support group_by_project, group_by_function, group_by_section_category and
group_by_section_category_strict_membership in getInventoryList; also return
function_uid and project_uid on brains.
Modified:
erp5/trunk/products/ERP5/Tool/SimulationTool.py
erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml
erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision
erp5/trunk/products/ERP5/tests/testInventoryAPI.py
Modified: erp5/trunk/products/ERP5/Tool/SimulationTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/SimulationTool.py?rev=31084&r1=31083&r2=31084&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SimulationTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/SimulationTool.py [utf8] Fri Dec 4 16:33:31 2009
@@ -423,11 +423,18 @@
new_kw = new_kw.copy()
# Some columns cannot be found automatically, prepend table name to
# avoid ambiguities.
+
# Group-by expression
group_by = new_kw.pop('group_by', [])
- if len(group_by):
- new_kw['group_by_expression'] = ', '.join(['%s.%s' % (table, x) \
- for x in group_by])
+ column_group_by = new_kw.pop('column_group_by', [])
+ if column_group_by:
+ group_by.extend(['%s.%s' % (table, x) for x in column_group_by])
+ related_key_group_by = new_kw.pop('related_key_group_by', [])
+ if related_key_group_by:
+ group_by.extend(['%s_%s' % (table, x) for x in related_key_group_by])
+ if group_by:
+ new_kw['group_by'] = group_by
+
# Column values
column_value_dict = new_kw.pop('column_value_dict', {})
for key, value in column_value_dict.iteritems():
@@ -531,12 +538,16 @@
group_by_node=0,
group_by_mirror_node=0,
group_by_section=0,
+ group_by_section_category=0,
+ group_by_section_category_strict_membership=0,
group_by_mirror_section=0,
group_by_payment=0,
group_by_sub_variation=0,
group_by_variation=0,
group_by_movement=0,
group_by_resource=0,
+ group_by_project=0,
+ group_by_function=0,
group_by_date=0,
# sort_on
sort_on=None,
@@ -703,30 +714,45 @@
['catalog.uid=%s' % uid for uid in uid_list])
# build the group by expression
- group_by_expression_list = []
+ column_group_by_expression_list = []
+ related_key_group_by_expression_list = []
if group_by_node:
- group_by_expression_list.append('node_uid')
+ column_group_by_expression_list.append('node_uid')
if group_by_mirror_node:
- group_by_expression_list.append('mirror_node_uid')
+ column_group_by_expression_list.append('mirror_node_uid')
if group_by_section:
- group_by_expression_list.append('section_uid')
+ column_group_by_expression_list.append('section_uid')
if group_by_mirror_section:
- group_by_expression_list.append('mirror_section_uid')
+ column_group_by_expression_list.append('mirror_section_uid')
if group_by_payment:
- group_by_expression_list.append('payment_uid')
+ column_group_by_expression_list.append('payment_uid')
if group_by_sub_variation:
- group_by_expression_list.append('sub_variation_text')
+ column_group_by_expression_list.append('sub_variation_text')
if group_by_variation:
- group_by_expression_list.append('variation_text')
+ column_group_by_expression_list.append('variation_text')
if group_by_movement:
- group_by_expression_list.append('uid')
+ column_group_by_expression_list.append('uid')
if group_by_resource:
- group_by_expression_list.append('resource_uid')
+ column_group_by_expression_list.append('resource_uid')
+ if group_by_project:
+ column_group_by_expression_list.append('project_uid')
+ if group_by_function:
+ column_group_by_expression_list.append('function_uid')
if group_by_date:
- group_by_expression_list.append('date')
- if group_by_expression_list:
- new_kw['group_by'] = group_by_expression_list
- return sql_kw, new_kw
+ column_group_by_expression_list.append('date')
+
+ if column_group_by_expression_list:
+ new_kw['column_group_by'] = column_group_by_expression_list
+
+ if group_by_section_category:
+ related_key_group_by_expression_list.append('section_category_uid')
+ if group_by_section_category_strict_membership:
+ related_key_group_by_expression_list.append(
+ 'section_category_strict_membership_uid')
+ if related_key_group_by_expression_list:
+ new_kw['related_key_group_by'] = related_key_group_by_expression_list
+
+ return sql_kw, new_kw
#######################################################
# Inventory management
@@ -901,9 +927,12 @@
def _getDefaultGroupByParameters(self, ignore_group_by=0,
group_by_node=0, group_by_mirror_node=0,
group_by_section=0, group_by_mirror_section=0,
- group_by_payment=0,
+ group_by_payment=0, group_by_project=0,
+ group_by_function=0,
group_by_variation=0, group_by_sub_variation=0,
group_by_movement=0, group_by_date=0,
+ group_by_section_category=0,
+ group_by_section_category_strict_membership=0,
group_by_resource=None,
movement_list_mode=0,
**ignored):
@@ -925,9 +954,11 @@
new_group_by_dict = {}
if not ignore_group_by:
if group_by_node or group_by_mirror_node or group_by_section or \
+ group_by_project or group_by_function or \
group_by_mirror_section or group_by_payment or \
group_by_sub_variation or group_by_variation or \
- group_by_movement or group_by_date:
+ group_by_movement or group_by_date or group_by_section_category or\
+ group_by_section_category_strict_membership:
if group_by_resource is None:
group_by_resource = 1
new_group_by_dict['group_by_resource'] = group_by_resource
@@ -1009,7 +1040,8 @@
AVAILABLE_CRITERIONS_IN_INVENTORY_TABLE = ['node_uid',
'section_uid',
'payment_uid']
- group_by_list = query_generator_kw.get('group_by', [])
+ # Only column group by are supported in full inventories
+ group_by_list = query_generator_kw.get('column_group_by', [])
column_value_dict = query_generator_kw.get('column_value_dict', {})
new_group_by_list = []
new_column_value_dict = {}
@@ -1166,10 +1198,10 @@
sql_source_list.extend((initial_inventory_line_list,
delta_inventory_line_list))
else:
- if 'group_by' in new_kw:
+ if 'column_group_by' in new_kw:
group_by_id_list = []
group_by_id_list_append = group_by_id_list.append
- for group_by_id in new_kw['group_by']:
+ for group_by_id in new_kw['column_group_by']:
if group_by_id == 'uid':
group_by_id_list_append('stock_uid')
else:
Modified: erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml?rev=31084&r1=31083&r2=31084&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml [utf8] (original)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml [utf8] Fri Dec 4 16:33:31 2009
@@ -301,6 +301,8 @@
<dtml-var stock_table_id>.mirror_section_uid as mirror_section_uid,\n
<dtml-var stock_table_id>.payment_uid as payment_uid,\n
<dtml-var stock_table_id>.mirror_node_uid as mirror_node_uid,\n
+ <dtml-var stock_table_id>.function_uid as function_uid,\n
+ <dtml-var stock_table_id>.project_uid as project_uid,\n
catalog.path as path\n
</dtml-if>\n
<dtml-if statistic>\n
@@ -440,6 +442,8 @@
<dtml-var stock_table_id>.mirror_section_uid as mirror_section_uid,\n
<dtml-var stock_table_id>.payment_uid as payment_uid,\n
<dtml-var stock_table_id>.mirror_node_uid as mirror_node_uid,\n
+ <dtml-var stock_table_id>.function_uid as function_uid,\n
+ <dtml-var stock_table_id>.project_uid as project_uid,\n
catalog.path as path\n
</dtml-if>\n
<dtml-if statistic>\n
Modified: erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision?rev=31084&r1=31083&r2=31084&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision [utf8] (original)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision [utf8] Fri Dec 4 16:33:31 2009
@@ -1,1 +1,1 @@
-1392
+1393
Modified: erp5/trunk/products/ERP5/tests/testInventoryAPI.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testInventoryAPI.py?rev=31084&r1=31083&r2=31084&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testInventoryAPI.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testInventoryAPI.py [utf8] Fri Dec 4 16:33:31 2009
@@ -856,7 +856,54 @@
self.other_node.getRelativeUrl()][0].inventory, 100)
self.assertEquals([r for r in inventory_list if r.section_relative_url is
None][0].inventory, 100)
-
+
+ def test_GroupBySectionCategory(self):
+ getInventoryList = self.getSimulationTool().getInventoryList
+ self.section.setGroup('level1')
+ self.other_section.setGroup('level1')
+ m1 = self._makeMovement(quantity=2)
+ m2 = self._makeMovement(destination_section_value=self.other_section, quantity=3)
+
+ inventory_list = getInventoryList(node_uid=self.node.getUid(),
+ section_category='group/level1',
+ group_by_section_category=1)
+ self.assertEquals(1, len(inventory_list))
+ self.assertEquals(3+2, inventory_list[0].inventory)
+
+ def test_GroupByFunction(self):
+ getInventoryList = self.getSimulationTool().getInventoryList
+ function1 = self.portal.portal_categories.restrictedTraverse(
+ 'function/function1')
+ function2 = self.portal.portal_categories.restrictedTraverse(
+ 'function/function1/function2')
+ self._makeMovement(quantity=2,
+ destination_function_value=function1,)
+ self._makeMovement(quantity=3,
+ destination_function_value=function2,)
+
+ inventory_list = getInventoryList(node_uid=self.node.getUid(),
+ group_by_function=1)
+ self.assertEquals(2, len(inventory_list))
+ self.assertEquals([r for r in inventory_list if r.function_uid ==
+ function1.getUid()][0].inventory, 2)
+ self.assertEquals([r for r in inventory_list if r.function_uid ==
+ function2.getUid()][0].inventory, 3)
+
+ def test_GroupByProject(self):
+ getInventoryList = self.getSimulationTool().getInventoryList
+ self._makeMovement(quantity=2,
+ destination_project_value=self.project,)
+ self._makeMovement(quantity=3,
+ destination_project_value=self.other_project,)
+
+ inventory_list = getInventoryList(node_uid=self.node.getUid(),
+ group_by_project=1)
+ self.assertEquals(2, len(inventory_list))
+ self.assertEquals([r for r in inventory_list if r.project_uid ==
+ self.project.getUid()][0].inventory, 2)
+ self.assertEquals([r for r in inventory_list if r.project_uid ==
+ self.other_project.getUid()][0].inventory, 3)
+
def test_GroupByResource(self):
getInventoryList = self.getSimulationTool().getInventoryList
self._makeMovement(quantity=100)
More information about the Erp5-report
mailing list