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 ?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
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 ?
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
Cree una cuenta para poder utilizar funciones exclusivas e interactuar con la comunidad.
Registrarse