如何将模块员工中的按钮 create/edit 隐藏到属于组 Employee/employee 的员工?
how to hide button create/edit in module employee to employee who belongs to group Employee/employee?
我开发了一个自定义模块来限制属于组 "Employee/Employee" 的员工创建新员工或修改现有员工的权利,但我注意到即使我的员工有权利 "Employee/Manager" 他变得无法创建或编辑员工。我该如何解决这个问题?有什么帮助的想法吗?
这是我的代码:
hr_employee_view.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_hr_employee_form_remove_edit" model="ir.ui.view">
<field name="name">view.hr.employee.form.remove.edit</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="groups_id" eval="[(4,ref('base.group_user'))]"/>
<field name="arch" type="xml">
<xpath expr="//form" position="attributes">
<attribute name="edit">false</attribute>
<attribute name="create">false</attribute>
</xpath>
</field>
</record>
<record id="view_hr_employee_tree_remove_edit_create" model="ir.ui.view">
<field name="name">view.hr.employee.tree.remove.edit.create</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_tree"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user')])]"/>
<field name="arch" type="xml">
<xpath expr="//tree" position="attributes">
<attribute name="edit">false</attribute>
<attribute name="create">false</attribute>
</xpath>
</field>
</record>
<record id="view_hr_employee_kanban_remove_edit_create" model="ir.ui.view">
<field name="name">view.hr.employee.kanban.remove.edit.create</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.hr_kanban_view_employees"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user')])]"/>
<field name="arch" type="xml">
<xpath expr="//kanban" position="attributes">
<attribute name="edit">false</attribute>
<attribute name="create">false</attribute>
</xpath>
</field>
</record>
</odoo>
您可以从 XML 中隐藏按钮 create/edit。像下面这样:
<field name="your_field_name" options="{'no_create_edit':True}" />
希望对您有所帮助。谢谢。
当用户没有该组但您的技术有效时
如您所知,每个用户都有该组,您无法将其删除。
您应该使用 Odoo 安全性来执行此操作。
默认情况下,不属于 Officer 的用户无权创建
access_hr_employee_system_user,hr.employee system user,model_hr_employee,base.group_user,1,0,0,0
access_hr_employee_user,hr.employee user,model_hr_employee,group_hr_user,1,1,1,1
因此,如果您的意思是只有经理才能创建员工,您应该这样做
更改 Officer 组的访问权限(目标 ID hr.access_hr_employee_user
)
hr.access_hr_employee_user,hr.employee user,model_hr_employee,group_hr_user,1,0,0,0
授予经理完全访问权限
access_hr_employee_manger,hr.employee manager,model_hr_employee,hr.group_hr_manager,1,1,1,1
这就是为什么只有经理可以创建或更新员工。
将此规则添加到您的模块,它将仅针对 hr_user 组而不是 hr_manager 组隐藏按钮 'create',您应该创建新文件 security.xml, 在这里你可以通过这个规则
<record id="rule_security_groups_hr_user" model="ir.rule">
<field name="name">User can't edit or create employees.</field>
<field name="model_id" ref="hr.model_hr_employee"/>
<field name="groups" eval="[(4, ref('hr.group_hr_user'))]"/>
<field name="perm_read" eval="1"/>
<field name="perm_create" eval="0"/>
<field name="perm_write" eval="0"/>
<field name="perm_unlink" eval="0" />
<field name="domain_force">[('user_id','=',user.id)]</field>
</record>
希望对您有所帮助。祝你好运
我开发了一个自定义模块来限制属于组 "Employee/Employee" 的员工创建新员工或修改现有员工的权利,但我注意到即使我的员工有权利 "Employee/Manager" 他变得无法创建或编辑员工。我该如何解决这个问题?有什么帮助的想法吗? 这是我的代码:
hr_employee_view.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_hr_employee_form_remove_edit" model="ir.ui.view">
<field name="name">view.hr.employee.form.remove.edit</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="groups_id" eval="[(4,ref('base.group_user'))]"/>
<field name="arch" type="xml">
<xpath expr="//form" position="attributes">
<attribute name="edit">false</attribute>
<attribute name="create">false</attribute>
</xpath>
</field>
</record>
<record id="view_hr_employee_tree_remove_edit_create" model="ir.ui.view">
<field name="name">view.hr.employee.tree.remove.edit.create</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_tree"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user')])]"/>
<field name="arch" type="xml">
<xpath expr="//tree" position="attributes">
<attribute name="edit">false</attribute>
<attribute name="create">false</attribute>
</xpath>
</field>
</record>
<record id="view_hr_employee_kanban_remove_edit_create" model="ir.ui.view">
<field name="name">view.hr.employee.kanban.remove.edit.create</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.hr_kanban_view_employees"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user')])]"/>
<field name="arch" type="xml">
<xpath expr="//kanban" position="attributes">
<attribute name="edit">false</attribute>
<attribute name="create">false</attribute>
</xpath>
</field>
</record>
</odoo>
您可以从 XML 中隐藏按钮 create/edit。像下面这样:
<field name="your_field_name" options="{'no_create_edit':True}" />
希望对您有所帮助。谢谢。
当用户没有该组但您的技术有效时 如您所知,每个用户都有该组,您无法将其删除。
您应该使用 Odoo 安全性来执行此操作。
默认情况下,不属于 Officer 的用户无权创建
access_hr_employee_system_user,hr.employee system user,model_hr_employee,base.group_user,1,0,0,0
access_hr_employee_user,hr.employee user,model_hr_employee,group_hr_user,1,1,1,1
因此,如果您的意思是只有经理才能创建员工,您应该这样做
更改 Officer 组的访问权限(目标 ID
hr.access_hr_employee_user
)hr.access_hr_employee_user,hr.employee user,model_hr_employee,group_hr_user,1,0,0,0
授予经理完全访问权限
access_hr_employee_manger,hr.employee manager,model_hr_employee,hr.group_hr_manager,1,1,1,1
这就是为什么只有经理可以创建或更新员工。
将此规则添加到您的模块,它将仅针对 hr_user 组而不是 hr_manager 组隐藏按钮 'create',您应该创建新文件 security.xml, 在这里你可以通过这个规则
<record id="rule_security_groups_hr_user" model="ir.rule">
<field name="name">User can't edit or create employees.</field>
<field name="model_id" ref="hr.model_hr_employee"/>
<field name="groups" eval="[(4, ref('hr.group_hr_user'))]"/>
<field name="perm_read" eval="1"/>
<field name="perm_create" eval="0"/>
<field name="perm_write" eval="0"/>
<field name="perm_unlink" eval="0" />
<field name="domain_force">[('user_id','=',user.id)]</field>
</record>
希望对您有所帮助。祝你好运