如何将模块员工中的按钮 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

因此,如果您的意思是只有经理才能创建员工,您应该这样做

  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

  2. 授予经理完全访问权限

    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>

希望对您有所帮助。祝你好运