# -*- coding: utf-8 -*- from odoo import api, fields, models from odoo.fields import Domain class ResUsers(models.Model): _inherit = 'res.users' @api.model def _get_login_domain(self, login): domain = super()._get_login_domain(login) if login and not self.env.context.get('in_get_login_domain'): # Normalize digits of the login string digits = ''.join(c for c in login if c.isdigit()) if digits: candidates = [digits] if digits.startswith('62'): candidates.append('0' + digits[2:]) candidates.append(digits[2:]) elif digits.startswith('0'): candidates.append('62' + digits[1:]) candidates.append(digits[1:]) else: candidates.append('0' + digits) candidates.append('62' + digits) # Check for res.partner with this phone number partners = self.env['res.partner'].with_context(in_get_login_domain=True).sudo().search([ '|', ('phone', 'in', candidates), ('phone_sanitized', 'in', candidates) ]) if partners: users = self.with_context(in_get_login_domain=True).sudo().search([ ('partner_id', 'in', partners.ids) ]) if users: return Domain('id', 'in', users.ids) return domain