52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2025 Sveltware Solutions
|
|
|
|
from odoo import fields, models
|
|
|
|
|
|
class IrUiMenu(models.Model):
|
|
_inherit = 'ir.ui.menu'
|
|
|
|
bk_web_icon = fields.Char(readonly=True)
|
|
|
|
ex_users = fields.Many2many(
|
|
'res.users',
|
|
'ir_ui_menu_ex_users_rel',
|
|
'menu_id',
|
|
'user_id',
|
|
string='Excluded Users',
|
|
help='Users listed here will not see this menu, regardless of group settings.',
|
|
)
|
|
|
|
def u_open_detail(self):
|
|
self.ensure_one()
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'res_model': 'ir.ui.menu',
|
|
'view_mode': 'form',
|
|
'res_id': self.id,
|
|
'views': [[self.env.ref('udoo_om_ux.om_edit_menu_form').id, 'form']],
|
|
}
|
|
|
|
def u_reset_icon(self):
|
|
for rec in self:
|
|
if rec.bk_web_icon:
|
|
rec.write({'web_icon': rec.bk_web_icon, 'bk_web_icon': False})
|
|
|
|
# -------------------------------------------------------------------------
|
|
# LOW-LEVEL METHODS
|
|
# -------------------------------------------------------------------------
|
|
|
|
def _visible_menu_ids(self, debug=False):
|
|
Menu = self.with_context(active_test=False).sudo()
|
|
|
|
visible_ids = super()._visible_menu_ids(debug)
|
|
return visible_ids - set(Menu._search([('ex_users', 'in', self.env.uid)]))
|
|
|
|
def write(self, values):
|
|
if 'web_icon' in values and 'bk_web_icon' not in values:
|
|
for rec in self:
|
|
if rec.web_icon and not rec.bk_web_icon:
|
|
rec.bk_web_icon = rec.web_icon
|
|
return super().write(values)
|