1
votes

comment masquer le bouton créer / modifier dans le module employé à employé qui appartient au groupe Employé / employé?

Je développe un module personnalisé pour restreindre le droit de créer un nouvel employé ou d'en modifier un existant aux employés qui appartiennent au groupe "Employé / Employé" mais je remarque même si mon employé a le droit "Employé / Manager" il est devenu incapable de créer ou de modifier des employés. Comment puis-je résoudre ce problème? Une idée d'aide s'il vous plaît? voici mon code:

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>

 entrez la description de l'image ici


0 commentaires

3 Réponses :


1
votes

Vous pouvez masquer la création / modification de bouton à partir de XML. Comme suit:

<field name="your_field_name" options="{'no_create_edit':True}" />

J'espère que cela vous aidera. Merci.


1 commentaires

Mon problème est que le bouton sera masqué pour tous les groupes d'employés



1
votes

Votre technique fonctionne lorsque les utilisateurs n'ont pas ce groupe mais car vous savez que chaque utilisateur possède ce groupe et que vous ne pouvez pas le supprimer.

Vous devez utiliser la sercurity Odoo pour faire ceci.

Une chose par défaut Les utilisateurs qui n'appartiennent pas à l'officier qu'ils n'ont pas accès pour créer

  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

Donc, si vous voulez dire que seul le responsable peut créer un employé, vous devez le faire

  1. modifier le droit d'accès du groupe Officiers (ciblez l'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. Donner aux administrateurs des droits d'accès complets

    access_hr_employee_manger, hr.employé manager, model_hr_employee, hr.group_hr_manager, 1,1,1,1

C'est pourquoi seul le responsable peut créer ou mettre à jour des employés.


10 commentaires

Bien que j'utilise ces règles de sécurité, mon problème est le même. Tous les groupes d'employés ne pourront pas créer / créer d'employés. je ne sais pas d'où vient le problème.


Vous pouvez vérifier l'accès de sécurité sur votre modèle en utilisant le mode développeur Odoo et voir où le problème exactement


Dois-je modifier le fichier ir.model.access.csv dans le module existant (hr) ou créer un nouveau module avec ces règles?


non créer un nouveau est mieux c'est pourquoi j'ai utilisé hr.access_hr_employee_user comme ça nous changeons la même règle qui a été créée par le module hr .


Lorsque j'utilise vos règles, une erreur s'affiche: Aucun enregistrement correspondant n'a été trouvé pour l'ID externe 'group_hr_user' dans le champ 'Group'


désolé car il a été créé en hr vous devez donner l'ID XML complet hr.group_hr_user juste corriger la première règle


..., hr.group_hr_user, 1,0,0,0 toujours lorsque vous avez besoin d'obtenir un enregistrement par xml-id, vous devez donner le nom complet


même si j'utilise ce groupe, il est toujours possible de créer et de modifier des employés


pouvez-vous publier une photo des règles de sécurité odoo de l'employé hr.


oui je savais que cela devrait fonctionner parce que la sécurité Odoo est si puissante.



2
votes

Ajoutez cette règle à votre module, elle masquera le bouton 'créer' uniquement pour le groupe hr_user et non pour le groupe hr_manager, vous devez créer un nouveau fichier security.xml, où vous pourrez passer cette règle

  <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>


4 commentaires

Merci pour votre réponse mais l'utilisateur est toujours en mesure de créer ou de modifier les employés


avez-vous déclaré le fichier security.xml dans le fichier __ manifest __.py?


Je l'ai testé, cela fonctionne correctement, vous devriez revoir votre code


Il y avait une autre règle qui était en conflit avec cette règle. Ça fonctionne maintenant. Merci