From bb5e63db6133e4c2487721cb37b3b2272232e754 Mon Sep 17 00:00:00 2001 From: augusto-weiss Date: Wed, 11 Feb 2026 19:12:25 +0000 Subject: [PATCH] [FIX] mail_log_only_internal: refactor search --- mail_log_only_internal/models/res_partner.py | 40 ++------------------ 1 file changed, 3 insertions(+), 37 deletions(-) diff --git a/mail_log_only_internal/models/res_partner.py b/mail_log_only_internal/models/res_partner.py index f9d4354c..6db67bb6 100644 --- a/mail_log_only_internal/models/res_partner.py +++ b/mail_log_only_internal/models/res_partner.py @@ -11,10 +11,9 @@ class ResPartner(models.Model): _inherit = "res.partner" def _get_allowed_partner_ids(self): - all_users = self.env["res.users"].search([("active", "=", True)]) - internal_users = all_users.filtered(lambda u: u.has_group("base.group_user") and u.partner_id).mapped( - "partner_id.id" - ) + internal_group = self.env.ref("base.group_user") + internal_users = internal_group.all_user_ids.mapped("partner_id.id") + allow_ids_str = ( self.env["ir.config_parameter"].sudo().get_param("mail_log_only_internal.allow_log_partner_ids", "[]") ) @@ -34,36 +33,3 @@ def _get_mention_suggestions_domain(self, search): domain = super()._get_mention_suggestions_domain(search) allowed_partner_ids = self._get_allowed_partner_ids() return Domain.AND([domain, [("id", "in", allowed_partner_ids)]]) - - @api.model - def _search_mention_suggestions(self, domain, limit, extra_domain=None): - allowed_partner_ids = self._get_allowed_partner_ids() - domain = Domain.AND([domain, [("id", "in", allowed_partner_ids)]]) - return super()._search_mention_suggestions(domain, limit, extra_domain) - - @api.model - def get_mention_suggestions(self, search, limit=8): - result = super().get_mention_suggestions(search, limit) - allowed_partner_ids = self._get_allowed_partner_ids() - if isinstance(result, dict) and "res.partner" in result: - filtered_partners = [ - partner for partner in result["res.partner"] if partner.get("id") in allowed_partner_ids - ] - result["res.partner"] = filtered_partners - if "hr.employee" in result: - allowed_employees = ( - self.env["res.partner"].browse(allowed_partner_ids).mapped("user_ids.employee_ids.id") - ) - result["hr.employee"] = [emp for emp in result["hr.employee"] if emp.get("id") in allowed_employees] - if "res.users" in result: - allowed_users = self.env["res.partner"].browse(allowed_partner_ids).mapped("user_ids.id") - result["res.users"] = [user for user in result["res.users"] if user.get("id") in allowed_users] - return result - - @api.model - def _search_for_channel_invite(self, store, search_term, channel_id=None, limit=30): - result = super()._search_for_channel_invite(store, search_term, channel_id, limit) - allowed_partner_ids = self._get_allowed_partner_ids() - result["partner_ids"] = [pid for pid in result.get("partner_ids", []) if pid in allowed_partner_ids] - result["count"] = len(result["partner_ids"]) - return result