Esempio n. 1
0
    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')
Esempio n. 2
0
    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')