32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
# Fusion Accounting - Menu Visibility Rules
|
|
# Restricts certain accounting menus to users with the account readonly group
|
|
|
|
from odoo import models
|
|
|
|
|
|
class FusionIrUiMenu(models.Model):
|
|
"""Controls visibility of advanced accounting menus so they are
|
|
only shown to users who have at least the account-readonly role."""
|
|
|
|
_inherit = 'ir.ui.menu'
|
|
|
|
def _visible_menu_ids(self, debug=False):
|
|
"""Filter out specialised accounting menus for users lacking
|
|
the ``account.group_account_readonly`` permission."""
|
|
visible = super()._visible_menu_ids(debug)
|
|
|
|
if not self.env.user.has_group('account.group_account_readonly'):
|
|
restricted_refs = [
|
|
'fusion_accounting.account_tag_menu',
|
|
'fusion_accounting.menu_account_group',
|
|
'fusion_accounting.menu_action_account_report_multicurrency_revaluation',
|
|
]
|
|
hidden_ids = set()
|
|
for xml_ref in restricted_refs:
|
|
menu = self.env.ref(xml_ref, raise_if_not_found=False)
|
|
if menu:
|
|
hidden_ids.add(menu.sudo().id)
|
|
return visible - hidden_ids
|
|
|
|
return visible
|