mapan_loyalty_push/models/res_users.py

37 lines
1.5 KiB
Python

# -*- 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