From 7b1eb7a1c63bc69d97d77ef6646b780c775419e2 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Tue, 28 Sep 2021 13:31:10 +0000 Subject: [PATCH] [FIX] mail: make possible to search on channel_partner_id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue ----- Adding ('channel_partner_id', 'ilike', name) when searching for mail.channel.rtc.session does not filter out any record because the model mail.channel.partner does not define any _rec_name only the name_get Solution ------- Implement a _name_search method consistent with the name_get closes odoo/odoo#77369 X-original-commit: 6c731a75295bbc8107d08ac3ed5c3d01245c782d Signed-off-by: Sébastien Theys (seb) --- addons/mail/models/mail_channel_partner.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/addons/mail/models/mail_channel_partner.py b/addons/mail/models/mail_channel_partner.py index e012f5ebb9e..f4f9ef998b1 100644 --- a/addons/mail/models/mail_channel_partner.py +++ b/addons/mail/models/mail_channel_partner.py @@ -34,6 +34,14 @@ class ChannelPartner(models.Model): def name_get(self): return [(record.id, record.partner_id.name or record.guest_id.name) for record in self] + def _name_search(self, name='', args=None, operator='ilike', limit=100, name_get_uid=None): + domain = [[('partner_id', operator, name)], [('guest_id', operator, name)]] + if '!' in operator or 'not' in operator: + domain = expression.AND(domain) + else: + domain = expression.OR(domain) + return self._search(expression.AND([domain, args]), limit=limit, access_rights_uid=name_get_uid) + def init(self): self.env.cr.execute("CREATE UNIQUE INDEX IF NOT EXISTS mail_channel_partner_partner_unique ON %s (channel_id, partner_id) WHERE partner_id IS NOT NULL" % self._table) self.env.cr.execute("CREATE UNIQUE INDEX IF NOT EXISTS mail_channel_partner_guest_unique ON %s (channel_id, guest_id) WHERE guest_id IS NOT NULL" % self._table)