Overslaan naar inhoud
Menu
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Deze vraag is gerapporteerd
1 Beantwoorden
320 Weergaven

J'ai une vue contenant plusieurs champs à rendre en lecture seule, et le faire manuellement est très compliqué. Y a-t-il une solution plus simple ?

Avatar
Annuleer
Beste antwoord

Hello, 

Please try : 


@api.model

    def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):

        result = super(modelname, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar,

                                                              submenu=submenu)

        print('fields_view_get')

        if view_type == 'form':

            group = self.env.user.has_group("your_model.your_group")

            doc = etree.XML(result['arch'])

            for node in doc.xpath("//field"):

                if group and self.env.user.id not in self.env.ref('base.user_admin').ids:

                    if node.get('name') not in ('exclut'): #exclut : les champs à exclut

                        node.set("readonly", "1")

                        modifiers = json.loads(node.get("modifiers"))

                        modifiers['readonly'] = True

                        node.set("modifiers", json.dumps(modifiers))

            result['arch'] = etree.tostring(doc, encoding='unicode')

        return result


Best regards

Avatar
Annuleer