From acd7d84da474eae3d64e0c5c6369c0dfb1deb395 Mon Sep 17 00:00:00 2001
From: Samus CTO <cto@openerp.com>
Date: Wed, 7 Jan 2015 16:45:02 +0100
Subject: [PATCH] [IMP] make name_search() use '=' if col _rec_name is an
 integer

When looking for an issue number, it's more useful to match the word in
the whole string instead of just a part of it.
---
 openerp/models.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/openerp/models.py b/openerp/models.py
index 23c967e07f16..78b6aaaaf32e 100644
--- a/openerp/models.py
+++ b/openerp/models.py
@@ -1707,7 +1707,7 @@ class BaseModel(object):
             return False
 
     @api.model
-    def name_search(self, name='', args=None, operator='ilike', limit=100):
+    def name_search(self, name='', args=None, operator=None, limit=100):
         """ name_search(name='', args=None, operator='ilike', limit=100) -> records
 
         Search for records that have a display name matching the given
@@ -1733,7 +1733,7 @@ class BaseModel(object):
         """
         return self._name_search(name, args, operator, limit=limit)
 
-    def _name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100, name_get_uid=None):
+    def _name_search(self, cr, user, name='', args=None, operator=None, context=None, limit=100, name_get_uid=None):
         # private implementation of name_search, allows passing a dedicated user
         # for the name_get part to solve some access rights issues
         args = list(args or [])
@@ -1741,6 +1741,9 @@ class BaseModel(object):
         if not self._rec_name:
             _logger.warning("Cannot execute name_search, no _rec_name defined on %s", self._name)
         elif not (name == '' and operator == 'ilike'):
+            if operator is None:
+                field = self._fields[self._rec_name]
+                operator = ('=' if field.type == 'integer' else 'ilike')
             args += [(self._rec_name, operator, name)]
         access_rights_uid = name_get_uid or user
         ids = self._search(cr, user, args, limit=limit, context=context, access_rights_uid=access_rights_uid)
-- 
GitLab