[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