如何将模块员工中的按钮创建/编辑隐藏到属于员工/雇员组的员工?

时间:2019-05-24 13:13:35

标签: python odoo odoo-11

我开发了一个自定义模块,以将创建新雇员或修改现有雇员的权利限制为属于“雇员/雇员”组的雇员,但是我注意到即使我的雇员具有“雇员/经理”的权利他变得无法创建或编辑员工。我该如何解决这个问题?有任何帮助的想法吗? 这是我的代码:

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>

enter image description here

3 个答案:

答案 0 :(得分:1)

您的技术工作在用户没有该组但 您知道每个用户都具有该组,因此无法将其删除。

您应该使用Odoo安全性做到这一点。

默认情况下一件事不属于官员的用户他们无权创建

  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. 更改官员组的访问权限(以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

这就是为什么只有经理才能创建或更新员工的原因。

答案 1 :(得分:1)

将此规则添加到您的模块中,它将仅对hr_user组而不是hr_manager组隐藏“创建”按钮,您应该创建新文件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>

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

答案 2 :(得分:0)

您可以从XML隐藏按钮创建/编辑。如下所示:

array_push()

希望这对您有所帮助。谢谢。