[Erp5-report] r16812 - in /erp5/trunk/products/ERP5: Tool/ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Oct 3 19:11:52 CEST 2007
Author: jerome
Date: Wed Oct 3 19:11:52 2007
New Revision: 16812
URL: http://svn.erp5.org?rev=16812&view=rev
Log:
Make it possible to sort on related keys and keys from catalog table.
Modified:
erp5/trunk/products/ERP5/Tool/SimulationTool.py
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=16812&r1=16811&r2=16812&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SimulationTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/SimulationTool.py Wed Oct 3 19:11:52 2007
@@ -368,6 +368,7 @@
def _generateSQLKeywordDictFromKeywordDict(self, table='stock', sql_kw={},
new_kw={}):
+ ctool = getToolByName(self, 'portal_catalog')
sql_kw = sql_kw.copy()
new_kw = new_kw.copy()
# Some columns cannot be found automatically, prepend table name to
@@ -418,16 +419,19 @@
simulation_query = regular_query
if simulation_query is not None:
new_kw['query'] = simulation_query
+
# Sort on
if 'sort_on' in new_kw:
+ table_column_list = ctool.getSQLCatalog()._getCatalogSchema(
+ table=table)
sort_on = new_kw['sort_on']
new_sort_on = []
for column_id, sort_direction in sort_on:
- if '.' not in column_id:
+ if column_id in table_column_list:
column_id = '%s.%s' % (table, column_id)
new_sort_on.append((column_id, sort_direction))
new_kw['sort_on'] = tuple(new_sort_on)
- sql_kw.update(self.portal_catalog.buildSQLQuery(**new_kw))
+ sql_kw.update(ctool.buildSQLQuery(**new_kw))
return sql_kw
def _generateKeywordDict(self,
Modified: erp5/trunk/products/ERP5/tests/testInventoryAPI.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testInventoryAPI.py?rev=16812&r1=16811&r2=16812&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testInventoryAPI.py (original)
+++ erp5/trunk/products/ERP5/tests/testInventoryAPI.py Wed Oct 3 19:11:52 2007
@@ -1101,6 +1101,19 @@
sort_on=(('stock.date', 'ascending'),
('stock.uid', 'ascending'),)) ]
self.assertEquals(movement_date_list, date_list)
+
+ def test_SortOnCatalogColumn(self):
+ getMovementHistoryList = self.getSimulationTool().getMovementHistoryList
+ self._makeMovement(quantity=1, title='First')
+ self._makeMovement(quantity=2, title='Second')
+
+ self.assertEquals(['First', 'Second'], [ x.getObject().getTitle() for x in
+ getMovementHistoryList(section_uid=self.section.getUid(),
+ sort_on=(('title', 'ascending'),)) ])
+ self.assertEquals(['Second', 'First'], [ x.getObject().getTitle() for x in
+ getMovementHistoryList(section_uid=self.section.getUid(),
+ sort_on=(('title', 'descending'),)) ])
+
# FIXME: do we want to include it or no ?
def test_Limit(self):
More information about the Erp5-report
mailing list