如何在odoo中为某些用户组隐藏记录

问题描述 投票:0回答:1

En: 开发的功能很好地过滤了群组,但它并不仅仅返回过去 24 小时内的案例。我希望它隐藏所有超过 24 小时的案例。可以调整一下吗?

PT:O filter que desenvolvi para os group está funcionando bem,exceto por um detalhe:ele não está retornando apenas os casos que ocorreram nas últimas nas últimas 24 小时。 Gostaria 是一个神秘的事物,是我在这段时间内所经历的一切。 Poderia ajustar isso?

    _logger = logging.getLogger(__name__)

    @api.model
    def cases_records_hide(self):
        _logger.info("A função cases_records_hide() foi chamada com sucesso.")

        # Encontre registros criados há mais de 24 horas
        records_to_hide = self.env['linhaverde.case'].search([
            ('datetime_created', '<', datetime.now() - timedelta(hours=24))
        ])

        _logger.info(f"Encontrados {len(records_to_hide)} registros para esconder.")

        # Log dos IDs dos registros que serão ocultados
        _logger.info(f"IDs dos registros a serem ocultados: {records_to_hide.ids}")

        # Get the current user
        current_user = self.env.user

        # Log do nome do usuário e dos grupos aos quais ele pertence
        _logger.info(f"Nome do usuário: {current_user.name}")
        _logger.info(f"Grupos do usuário: {current_user.groups_id.mapped('name')}")

        # Check if the user is in the specified groups
        if current_user.has_group('linhaverde_odoo.group_linhaverde_focal_point') or \
        current_user.has_group('linhaverde_odoo.group_linhaverde_operator') or \
        current_user.has_group('linhaverde_odoo.group_linhaverde_partner'):
            # Usuários em 'linhaverde_focal_point', 'linhaverde_operator' ou 'linhaverde_partner' não podem ver os casos que passaram de 24h
            _logger.info("Permissão de leitura removida dos registros com sucesso.")
            return [('id', 'not in', records_to_hide.ids)]
        else:
            # Outros usuários podem ver todos os casos
            _logger.info("Usuário não está em grupos específicos. Retornando todos os registros.")
            return []

    _logger.info("Permissão de leitura removida dos registros com sucesso.")
odoo hidden
1个回答
0
投票

您的函数名称是:“def Cases_records_hide”,但它返回“不隐藏”记录的域。这是你的目的吗?

不返回域名,直接返回您想要显示的记录怎么样:

# if user allowed:
return self.env['linhaverde.case'].search([
            ('datetime_created', '>', datetime.now() - timedelta(hours=24))
        ])
© www.soinside.com 2019 - 2024. All rights reserved.