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>
3 Réponses :
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.
Mon problème est que le bouton sera masqué pour tous les groupes d'employés
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
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
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.
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.
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>
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