def test_readonly_fields(self): """ Employee related fields should be readonly if self editing is not allowed """ self.env['ir.config_parameter'].sudo().set_param( 'hr.hr_employee_self_edit', False) james = new_test_user(self.env, login='******', groups='base.group_user', name='Simple employee', email='*****@*****.**') james = james.with_user(james) self.env['hr.employee'].create({ 'name': 'James', 'user_id': james.id, }) view = self.env.ref('hr.res_users_view_form_profile') view_infos = james.fields_view_get(view_id=view.id) employee_related_fields = { field_name for field_name, field_attrs in view_infos['fields'].items() if field_attrs.get('related', (None, ))[0] == 'employee_id' } form = Form(james, view=view) for field in employee_related_fields: with self.assertRaises( AssertionError, msg= "Field '%s' should be readonly in the employee profile when self edition is not allowed." % field): form.__setattr__(field, 'some value')
def test_readonly_fields(self): """ Employee related fields should be readonly if self editing is not allowed """ self.env['ir.config_parameter'].sudo().set_param('hr.hr_employee_self_edit', False) james = new_test_user(self.env, login='******', groups='base.group_user', name='Simple employee', email='*****@*****.**') james = james.with_user(james) self.env['hr.employee'].create({ 'name': 'James', 'user_id': james.id, }) view = self.env.ref('hr.res_users_view_form_profile') fields = james._fields view_infos = james.get_view(view.id) employee_related_fields = { el.get('name') for el in etree.fromstring(view_infos['arch']).xpath('//field[not(ancestor::field)]') if fields[el.get('name')].related and fields[el.get('name')].related.split('.')[0] == 'employee_id' } form = Form(james, view=view) for field in employee_related_fields: with self.assertRaises(AssertionError, msg="Field '%s' should be readonly in the employee profile when self editing is not allowed." % field): form.__setattr__(field, 'some value')