Exemple #1
0
    def test_profile_view_fields(self):
        """ A simple user should see all fields in profile view, even if they are protected by groups """
        view = self.env.ref('hr.res_users_view_form_profile')

        # For reference, check the view with user with every groups protecting user fields
        all_groups_xml_ids = chain(*[
            field.groups.split(',')
            for field in self.env['res.users']._fields.values()
            if field.groups
        ])
        all_groups = self.env['res.groups']
        for xml_id in all_groups_xml_ids:
            all_groups |= self.env.ref(xml_id.strip())
        user_all_groups = new_test_user(self.env, groups='base.group_user', login='******', name='God')
        user_all_groups.write({'groups_id': [(4, group.id, False) for group in all_groups]})
        view_infos = self.env['res.users'].with_user(user_all_groups).fields_view_get(view_id=view.id)
        full_fields = view_infos['fields']

        # Now check the view for a simple user
        user = new_test_user(self.env, login='******', name='Grouillot')
        view_infos = self.env['res.users'].with_user(user).fields_view_get(view_id=view.id)
        fields = view_infos['fields']

        # Compare both
        self.assertEqual(full_fields.keys(), fields.keys(), "View fields should not depend on user's groups")
Exemple #2
0
 def setUp(self):
     super(TestHrAttendance, self).setUp()
     self.user = new_test_user(self.env, login='******', groups='base.group_user,hr_attendance.group_hr_attendance_use_pin')
     self.user_no_pin = new_test_user(self.env, login='******', groups='base.group_user')
     self.test_employee = self.env['hr.employee'].create({
         'name': "François Russie",
         'user_id': self.user.id,
         'pin': '1234',
     })
     self.employee_kiosk = self.env['hr.employee'].create({
         'name': "Machiavel",
         'pin': '5678',
     })
Exemple #3
0
 def test_access_my_profile(self):
     """ A simple user should be able to read all fields in his profile """
     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)
     fields = view_infos['fields'].keys()
     james.read(fields)
Exemple #4
0
    def setUp(self):
        super(TestSelfAccessRights, self).setUp()
        self.richard = new_test_user(self.env, login='******', groups='base.group_user', name='Simple employee', email='*****@*****.**')
        self.richard_emp = self.env['hr.employee'].create({
            'name': 'Richard',
            'user_id': self.richard.id,
            'address_home_id': self.env['res.partner'].create({'name': 'Richard', 'phone': '21454', 'type': 'private'}).id,
        })
        self.hubert = new_test_user(self.env, login='******', groups='base.group_user', name='Simple employee', email='*****@*****.**')
        self.hubert_emp = self.env['hr.employee'].create({
            'name': 'Hubert',
            'user_id': self.hubert.id,
            'address_home_id': self.env['res.partner'].create({'name': 'Hubert', 'type': 'private'}).id,
        })

        self.protected_fields_emp = OrderedDict([(k, v) for k, v in self.env['hr.employee']._fields.items() if v.groups == 'hr.group_hr_user'])
        # Compute fields and id field are always readable by everyone
        self.read_protected_fields_emp = OrderedDict([(k, v) for k, v in self.env['hr.employee']._fields.items() if not v.compute and k != 'id'])
        self.self_protected_fields_user = OrderedDict([
            (k, v)
            for k, v in self.env['res.users']._fields.items()
            if v.groups == 'hr.group_hr_user' and k in self.env['res.users'].SELF_READABLE_FIELDS
        ])
Exemple #5
0
 def test_company_create(self):
     main_company = self.env.ref('base.main_company')
     user = new_test_user(
         self.env,
         login='******',
         groups=
         'base.group_user,base.group_erp_manager,base.group_partner_manager',
         company_id=main_company.id,
         company_ids=[(6, 0, main_company.ids)])
     Company = self.env['res.company']
     Company = Company.with_user(user)
     Company = Company.with_context(allowed_company_ids=main_company.ids)
     company = Company.create({'name': "Wall Company"})
     self.assertEqual(company.leave_timesheet_project_id.sudo().company_id,
                      company,
                      "It should have created a project for the company")
    def test_add_followers_on_post(self):
        # Add some existing partners, some from another company
        company = self.env['res.company'].create({'name': 'Oopo'})
        existing_partners = self.env['res.partner'].create([{
            'name': 'Jean',
            'company_id': company.id,
        },{
            'name': 'Paulus',
        }])
        self.test_move.message_subscribe(existing_partners.ids)

        user = new_test_user(self.env, login='******', groups='account.group_account_invoice')

        move = self.test_move.with_user(user)
        partner = self.env['res.partner'].create({'name': 'Belouga'})
        commercial_partner = self.env['res.partner'].create({'name': 'Rorqual'})
        move.partner_id = partner
        move.commercial_partner_id = commercial_partner

        move.post()
        self.assertEqual(move.message_partner_ids, self.env.user.partner_id | existing_partners | partner | commercial_partner)
Exemple #7
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')