From e6ee1947f86066e0779a76c6a77eea1b5ed3e6e7 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Wed, 29 Jan 2014 13:34:04 +0100 Subject: [PATCH] [FIX] better test, add missing parentheses in query, return empty list in case of no idea (instead of triggering super) bzr revid: mat@openerp.com-20140129123404-8hs786n64briqyta --- openerp/addons/base/res/res_partner.py | 6 ++++-- openerp/addons/base/tests/test_base.py | 12 +++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index d337b3c0a10..d66c69daaa7 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -619,12 +619,12 @@ class res_partner(osv.osv, format_address): query = ('''SELECT res_partner.id FROM res_partner LEFT JOIN res_partner company ON res_partner.parent_id = company.id''' - + where_str + ''' res_partner.email ''' + operator + ''' %s OR + + where_str + ''' (res_partner.email ''' + operator + ''' %s OR CASE WHEN company.id IS NULL OR res_partner.is_company THEN res_partner.name ELSE company.name || ', ' || res_partner.name - END ''' + operator + ''' %s + END ''' + operator + ''' %s) ORDER BY CASE WHEN company.id IS NULL OR res_partner.is_company @@ -641,6 +641,8 @@ class res_partner(osv.osv, format_address): if ids: return self.name_get(cr, uid, ids, context) + else: + return [] return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit) def find_or_create(self, cr, uid, email, context=None): diff --git a/openerp/addons/base/tests/test_base.py b/openerp/addons/base/tests/test_base.py index 02ce3b09688..b1453b5e372 100644 --- a/openerp/addons/base/tests/test_base.py +++ b/openerp/addons/base/tests/test_base.py @@ -41,12 +41,18 @@ class test_base(common.TransactionCase): 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) + for name, active in [ + ('"A Raoul Grosbedon" ', False), + ('ryu+giga-Sushi@aizubange.fukushima.jp', True), + ('Raoul chirurgiens-dentistes.fr', True), + (" Raoul O'hara ", True) + ]: + partner_id, dummy = self.res_partner.name_create(cr, uid, name, context={'default_active': active}) partners = self.res_partner.name_search(cr, uid, 'Raoul') - self.assertEqual(len(partners), 3, 'Incorrect search number result for name_search') + self.assertEqual(len(partners), 2, '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') + self.assertEqual(partners[0][1], 'Raoul chirurgiens-dentistes.fr', 'Incorrect partner returned, should be the first active') def test_20_res_partner_address_sync(self): cr, uid = self.cr, self.uid