在 Odoo 中隐藏菜单项?
Hiding menu item in Odoo?
我想在会计菜单中隐藏菜单项这是完整路径:
Accounting/Charts/Chart 的税收。我想隐藏它,所以我创建了自定义 xml file.but 我无法隐藏它。我可以使用标签删除此菜单项吗?
有人可以帮我解决这个问题吗?谢谢
使用 xml 文件创建一组,必须首先在 __openerp__.py.
中添加
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="new_group_id" model="res.groups">
<field name="name">New Group Name</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
</data>
</openerp>
并创建另一个 xml 文件,在其中使用该 xml 代码更新该菜单项。
<record id="account.menu_action_tax_code_tree" model="ir.ui.menu">
<field name="groups_id" eval="[(6, 0, [ref('new_group_id')] )]"/>
</record>
这足以隐藏菜单项。
您可以使用 fields_view_get
方法实现相同的效果
请尝试在操作的上下文中传递一些值
例如:
<record id="action_sample_record" model="ir.actions.act_window">
<field name="name">student record</field>
<field name="res_model">student.student</field>
<field name="view_type">form</field>
<field eval="False" name="view_id"/>
<field name="view_mode">tree,form</field>
<field name="context">{'student_master':True}</field>
</record>
现在覆盖 fields_view_get
方法
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
res = super(StudentStudent, self).fields_view_get(view_id, view_type, toolbar=toolbar, submenu=submenu)
if 'student_master' in self._context.keys():
res['toolbar'] = {'print': [], 'action': [], 'relate': []}
return res
希望对您有所帮助。我的代码示例适用于新版本 api,但您也可以对旧版本执行相同的操作。
<record id="group_hide_menu" model="res.groups">
<field name="name">Hide Menus</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="hr_evaluation.menu_open_view_hr_evaluation_tree" model="ir.ui.menu">
<field name="groups_id" eval="[(6,0,[ref('group_hide_menu')])]"/>
</record>
<record id="hr_evaluation.menu_open_hr_evaluation_interview_requests" model="ir.ui.menu">
<field name="groups_id" eval="[(6,0,[ref('group_hide_menu')])]"/>
</record>
我想在会计菜单中隐藏菜单项这是完整路径: Accounting/Charts/Chart 的税收。我想隐藏它,所以我创建了自定义 xml file.but 我无法隐藏它。我可以使用标签删除此菜单项吗?
有人可以帮我解决这个问题吗?谢谢
使用 xml 文件创建一组,必须首先在 __openerp__.py.
中添加<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="new_group_id" model="res.groups">
<field name="name">New Group Name</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
</data>
</openerp>
并创建另一个 xml 文件,在其中使用该 xml 代码更新该菜单项。
<record id="account.menu_action_tax_code_tree" model="ir.ui.menu">
<field name="groups_id" eval="[(6, 0, [ref('new_group_id')] )]"/>
</record>
这足以隐藏菜单项。
您可以使用 fields_view_get
方法实现相同的效果
请尝试在操作的上下文中传递一些值 例如:
<record id="action_sample_record" model="ir.actions.act_window">
<field name="name">student record</field>
<field name="res_model">student.student</field>
<field name="view_type">form</field>
<field eval="False" name="view_id"/>
<field name="view_mode">tree,form</field>
<field name="context">{'student_master':True}</field>
</record>
现在覆盖 fields_view_get
方法
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
res = super(StudentStudent, self).fields_view_get(view_id, view_type, toolbar=toolbar, submenu=submenu)
if 'student_master' in self._context.keys():
res['toolbar'] = {'print': [], 'action': [], 'relate': []}
return res
希望对您有所帮助。我的代码示例适用于新版本 api,但您也可以对旧版本执行相同的操作。
<record id="group_hide_menu" model="res.groups">
<field name="name">Hide Menus</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="hr_evaluation.menu_open_view_hr_evaluation_tree" model="ir.ui.menu">
<field name="groups_id" eval="[(6,0,[ref('group_hide_menu')])]"/>
</record>
<record id="hr_evaluation.menu_open_hr_evaluation_interview_requests" model="ir.ui.menu">
<field name="groups_id" eval="[(6,0,[ref('group_hide_menu')])]"/>
</record>