J'essaye de créer une vue de forme. Cependant, il existe de nombreux attributs tels que les groupes et les invisibles liés à l'autorisation afin que certains groupes de personnes puissent voir le champ. Mais existe-t-il un moyen pour certains groupes d'éditer le champ et l'autre groupe ne le peut pas?Odoo 9 Existe-t-il un moyen de gérer l'autorisation avec différents groupes sur un certain champ en mode formulaire?
Répondre
Tout d'abord, vous ne pouvez pas utiliser un domaine comme celui-ci
<field name="is_positive" attrs="{'readonly':[('state','==','final')]}"/>
Il n'y a pas un opérateur '=='
, utilisez =
à la place. Maintenant, pour répondre à votre question, si vous voulez créer une vue spéciale pour un autre groupe dans lequel certains éléments sont en lecture seule pour un groupe, et éditable dans l'autre, vous devez le faire de cette façon.
Pour la vue par défaut:
<record id="some_model_view" model="ir.ui.view">
<field name="name">some.model.form</field>
<field name="model">some.model</field>
<field name="arch" type="xml">
<form>
<field name="some_field" readonly="1"/>
</form>
<field/>
</record>
Pour un certain groupe:
<record id="some_model_view_for_other_group" model="ir.ui.view">
<field name="name">some.model.form</field>
<field name="model">some.model</field>
<field name="inherit_id" ref="my_module.some_model_view"
<field name="groups_id" eval="[(6, 0, [ref('some.first_group')])]" />
<field name="arch" type="xml">
<field name="some_field" position="attributes">
<attribute name="readonly">0</attribute>
</field>
<field/>
</record>
vous répondez plus \t bonne réponse efficace mais vous n'avez pas utilisé l'expression xpath ça marche comme ça? – Cherif
Oui cela fonctionne. Cela fonctionne s'il n'y a pas d'ambiguïté dans les éléments qui sont appelés. Avec Xpath, vous avez plus de contrôle. Mais si, disons, vous êtes sûr qu'il n'y a qu'un seul champ nommé 'some_field' dans le formulaire, vous pouvez utiliser cette syntaxe pour coder plus rapidement. – Majikat
Merci! Cela a fonctionné pour moi et c'est celui que je cherchais pour utiliser efficacement Odoo. –
ajouter un nouveau champ pour vérifier si l'utilisateur est gestionnaire ou utilisateur.
Nouvelle méthode Api
check_user = fields.Boolean(string='user',compute='_compute_user_check')
@api.multi
def _compute_user_check(self):
if self.user_has_groups('purchase.group_purchase_manager'):
self.check_user =True
Vu
<field name="is_positive" attrs="{'readonly':[('check_user','=','True')]}"/>
Je ne pense pas que self aurait une méthode 'user_has_groups'. La réponse de @ aslamsha22 est meilleure. – Majikat
S'il vous plaît -> https://github.com/odoo/odoo/search?p=2&q=user_has_groups&type=&utf8=%E2%9C%93 –
OH. Ma faute. C'est une fonctionnalité super pratique que vous avez montrée là. Mais encore, votre méthode de calcul renvoie une valeur au lieu de définir check_user. – Majikat
Je vais montrer un exemple sur la façon dont cette fonctionnalité fonctionne en vente groupe.
pour que le champ prix unitaire dans la ligne de commande de vente fait readonly nous sélectionnons le groupe d'utilisateurs user:own documents only
Le champ est modifiable pour 2 autres groupes user:All documets
et manager
Tout d'abord créer un champ booléen pour la vérification de l'utilisateur appartient à quel groupe
is_own_user = fields.Boolean(string="Own user", compute='compute_own_user')
Puis assig ns le champ booléen est True
lorsque l'utilisateur appartient à l'utilisateur de groupe: propres documents ne cède d'une autre à False
@api.depends('product_id')
def compute_own_user(self):
res_user_id = self.env['res.users'].search([('id', '=', self._uid)])
for rec in self:
if res_user_id.has_group('sales_team.group_sale_salesman') and not res_user_id.has_group('sales_team.group_sale_salesman_all_leads'):
rec.is_own_user = True
else:
rec.is_own_user = False
xml faire is_own_user invisible et remplace le champ prix unitaire
<xpath expr="//notebook/page/field[@name='order_line']/tree/field[@name='price_unit']" position="replace">
<field name="price_unit" attrs="{'readonly': [('isown_user', '=', True)]}" />
</xpath>
Merci d'avoir commenté. C'est bon pour moi d'utiliser python avec Odoo. Merci –
Vous pouvez prendre référence de cette réponse: https: // stackoverflow.com/questions/18912997/how-to-make-champ-readonly-based-on-group-and-status –