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")
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 ])
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 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', })
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_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)