如何使网站中的自定义菜单仅对连接的用户可见?奥杜 16

问题描述 投票:0回答:1
xml web odoo
1个回答
0
投票

当用户不是任何组的成员(该组必须具有外部 ID)时,您可以添加新字段

group_ids
并覆盖 _compute_visible
is_visible
字段设置为
False

示例:

class Menu(models.Model):
    _inherit = "website.menu"

    group_ids = fields.Many2many("res.groups")
    
    def _compute_visible(self):
        for menu in self:
            visible = True
            group_external_ids = [xmlid for xmlid in menu.group_ids.get_external_id().values() if xmlid]
            if menu.group_ids and group_external_ids and not menu.user_has_groups(",".join(group_external_ids)):
                visible = False
            elif menu.page_id and not menu.user_has_groups('base.group_user'):
                page_sudo = menu.page_id.sudo()
                if (not page_sudo.is_visible
                    or (not page_sudo.view_id._handle_visibility(do_raise=False)
                        and page_sudo.view_id._get_cached_visibility() != "password")):
                    visible = False
            menu.is_visible = visible

*没有外部 xml id 的组应该被忽略

© www.soinside.com 2019 - 2024. All rights reserved.