[MERGE] Merged branch holding a proposal to solve the generate_order_by issue (see lp:1070757). As requested by Olivier Donny, this fix has been moved into generate_order_by. Deleted previous workaround done in this branch. Patch courtesy of Paulius Sladkevičius
bzr revid: tde@openerp.com-20121207155825-9bjvuxhyr0x937l7
This commit is contained in:
commit
61a2a82174
|
@ -58,7 +58,7 @@ class test_search(common.TransactionCase):
|
|||
id_desc_active_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="id desc, active desc")
|
||||
self.assertEqual([e, ab, b, a, d, c], id_desc_active_desc, "Search with 'ID DESC, ACTIVE DESC' order failed.")
|
||||
|
||||
def test_10_unherits_m2order(self):
|
||||
def test_10_inherits_m2order(self):
|
||||
registry, cr, uid = self.registry, self.cr, self.uid
|
||||
users_obj = registry('res.users')
|
||||
|
||||
|
@ -95,6 +95,15 @@ class test_search(common.TransactionCase):
|
|||
test_user_ids = filter(lambda x: x in expected_ids, user_ids)
|
||||
self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order')
|
||||
|
||||
# Do: order on many2one, but not by specifying in order parameter of search, but by overriding _order of res_users
|
||||
old_order = users_obj._order
|
||||
users_obj._order = 'country_id desc, name asc, login desc'
|
||||
user_ids = users_obj.search(cr, search_user, [])
|
||||
expected_ids = [search_user, c, b, a]
|
||||
test_user_ids = filter(lambda x: x in expected_ids, user_ids)
|
||||
self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order')
|
||||
users_obj._order = old_order
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest2.main()
|
||||
|
|
|
@ -4745,16 +4745,8 @@ class BaseModel(object):
|
|||
|
||||
:raise" except_orm in case order_spec is malformed
|
||||
"""
|
||||
def _split_order(order, table):
|
||||
""" from name, id asc make "table"."id", "table."."name" asc """
|
||||
order_list = []
|
||||
for elem in order.split(','):
|
||||
subelems = elem.strip().split(' ')
|
||||
if len(subelems) == 1:
|
||||
subelems.append(' ')
|
||||
order_list.append('"%s"."%s" %s' % (table, subelems[0], subelems[1]))
|
||||
return order_list
|
||||
order_by_clause = ','.join(_split_order(self._order, self._table))
|
||||
order_by_clause = ''
|
||||
order_spec = order_spec or self._order
|
||||
if order_spec:
|
||||
order_by_elements = []
|
||||
self._check_qorder(order_spec)
|
||||
|
|
Loading…
Reference in New Issue