[FIX] revert previous rev for better where and add test
bzr revid: mat@openerp.com-20140129113938-517gqfi1kzcf64fz
This commit is contained in:
@@ -601,6 +601,7 @@ class res_partner(osv.osv, format_address):
|
||||
where_query = self._where_calc(cr, uid, args, context=context)
|
||||
self._apply_ir_rules(cr, uid, where_query, 'read', context=context)
|
||||
from_clause, where_clause, where_clause_params = where_query.get_sql()
|
||||
where_str = where_clause and (" WHERE %s AND " % where_clause) or ' WHERE '
|
||||
|
||||
# search on the name of the contacts and of its company
|
||||
search_name = name
|
||||
@@ -617,9 +618,9 @@ class res_partner(osv.osv, format_address):
|
||||
# a random selection of `limit` results.
|
||||
query = ('''SELECT res_partner.id FROM res_partner
|
||||
LEFT JOIN res_partner company
|
||||
ON res_partner.parent_id = company.id
|
||||
WHERE ''' + where_clause +
|
||||
''' AND res_partner.email ''' + operator + ''' %s OR
|
||||
ON res_partner.parent_id = company.id'''
|
||||
+ where_str +
|
||||
''' res_partner.email ''' + operator + ''' %s OR
|
||||
CASE
|
||||
WHEN company.id IS NULL OR res_partner.is_company
|
||||
THEN res_partner.name
|
||||
@@ -638,6 +639,7 @@ class res_partner(osv.osv, format_address):
|
||||
where_clause_params.append(limit)
|
||||
cr.execute(query, where_clause_params)
|
||||
ids = map(lambda x: x[0], cr.fetchall())
|
||||
|
||||
if ids:
|
||||
return self.name_get(cr, uid, ids, context)
|
||||
return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit)
|
||||
|
||||
@@ -39,6 +39,14 @@ class test_base(common.TransactionCase):
|
||||
new_id2 = self.res_partner.find_or_create(cr, uid, self.samples[2][0])
|
||||
self.assertTrue(new_id2 > new_id, 'find_or_create failed - should have created new one again')
|
||||
|
||||
def test_15_res_partner_name_search(self):
|
||||
cr,uid = self.cr, self.uid
|
||||
for text, name, mail in self.samples:
|
||||
partner_id, dummy = self.res_partner.name_create(cr, uid, text)
|
||||
partners = self.res_partner.name_search(cr, uid, 'Raoul')
|
||||
self.assertEqual(len(partners), 3, 'Incorrect search number result for name_search')
|
||||
partners = self.res_partner.name_search(cr, uid, 'Raoul', limit=1)
|
||||
self.assertEqual(len(partners), 1, 'Incorrect search number result for name_search with a limit')
|
||||
|
||||
def test_20_res_partner_address_sync(self):
|
||||
cr, uid = self.cr, self.uid
|
||||
|
||||
Reference in New Issue
Block a user