コード例 #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
            if field.groups != '.'  # "no-access" group on purpose
        ])
        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")
コード例 #2
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
        ])
コード例 #3
0
    def test_add_followers_on_post(self):
        # Add some existing partners, some from another company
        company = self.env['res.company'].create({'name': 'Oopo'})
        company.flush()
        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'})
        move.partner_id = partner

        move.action_post()
        self.assertEqual(
            move.message_partner_ids,
            self.env.user.partner_id | existing_partners | partner)
コード例 #4
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 editing is not allowed."
                    % field):
                form.__setattr__(field, 'some value')
コード例 #5
0
ファイル: test_frontend.py プロジェクト: sheetal4123/flectra
    def setUp(self):
        super().setUp()
        self.main_pos_config.write({"module_pos_hr": True})

        # Admin employee
        self.env.ref("hr.employee_admin").write(
            {"name": "Mitchell Admin", "pin": False}
        )

        # User employee
        emp1 = self.env.ref("hr.employee_han")
        emp1_user = new_test_user(
            self.env,
            login="******",
            groups="base.group_user",
            name="Pos Employee1",
            email="*****@*****.**",
        )
        emp1.write({"name": "Pos Employee1", "pin": "2580", "user_id": emp1_user.id})

        # Non-user employee
        emp2 = self.env.ref("hr.employee_jve")
        emp2.write({"name": "Pos Employee2", "pin": "1234"})

        with Form(self.main_pos_config) as config:
            config.employee_ids.add(emp1)
            config.employee_ids.add(emp2)
コード例 #6
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',
     })
コード例 #7
0
    def test_access_my_profile_toolbar(self):
        """ A simple user shouldn't have the possibilities to see the 'Change Password' action"""
        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')
        available_actions = james.fields_view_get(
            view_id=view.id, toolbar=True)['toolbar']['action']
        change_password_action = self.env.ref(
            "base.change_password_wizard_action")

        self.assertFalse(
            any(x['id'] == change_password_action.id
                for x in available_actions))
        """ An ERP manager should have the possibilities to see the 'Change Password' """
        john = new_test_user(self.env,
                             login='******',
                             groups='base.group_erp_manager',
                             name='ERP Manager',
                             email='*****@*****.**')
        john = john.with_user(john)
        self.env['hr.employee'].create({
            'name': 'John',
            'user_id': john.id,
        })
        view = self.env.ref('hr.res_users_view_form_profile')
        available_actions = john.fields_view_get(
            view_id=view.id, toolbar=True)['toolbar']['action']
        self.assertTrue(
            any(x['id'] == change_password_action.id
                for x in available_actions))
コード例 #8
0
 def test_manager_create_vehicle(self):
     manager = new_test_user(
         self.env,
         "test fleet manager",
         groups="fleet.fleet_group_manager,base.group_partner_manager")
     user = new_test_user(self.env,
                          "test base user",
                          groups="base.group_user")
     brand = self.env["fleet.vehicle.model.brand"].create({
         "name": "Audi",
     })
     model = self.env["fleet.vehicle.model"].create({
         "brand_id": brand.id,
         "name": "A3",
     })
     self.env["fleet.vehicle"].with_user(manager).create({
         "model_id":
         model.id,
         "driver_id":
         user.partner_id.id,
         "plan_to_change_car":
         False
     })
コード例 #9
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)
コード例 #10
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_company(main_company)
     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")
コード例 #11
0
    def test_search_renewal(self):
        """
            Should find the car with overdue contract or renewal due soon
        """
        user = new_test_user(self.env,
                             "test base user",
                             groups="base.group_user")
        brand = self.env["fleet.vehicle.model.brand"].create({
            "name": "Audi",
        })
        model = self.env["fleet.vehicle.model"].create({
            "brand_id": brand.id,
            "name": "A3",
        })
        car_1 = self.env["fleet.vehicle"].create({
            "model_id": model.id,
            "driver_id": user.partner_id.id,
            "plan_to_change_car": False
        })

        car_2 = self.env["fleet.vehicle"].create({
            "model_id": model.id,
            "driver_id": user.partner_id.id,
            "plan_to_change_car": False
        })
        Log = self.env['fleet.vehicle.log.contract']
        log = Log.create({
            'vehicle_id':
            car_2.id,
            'expiration_date':
            fields.Date.add(fields.Date.today(), days=10)
        })
        res = self.env["fleet.vehicle"].search([('contract_renewal_due_soon',
                                                 '=', True),
                                                ('id', '=', car_2.id)])
        self.assertEqual(res, car_2)

        log = Log.create({
            'vehicle_id':
            car_1.id,
            'expiration_date':
            fields.Date.add(fields.Date.today(), days=-10)
        })
        res = self.env["fleet.vehicle"].search([('contract_renewal_overdue',
                                                 '=', True),
                                                ('id', '=', car_1.id)])
        self.assertEqual(res, car_1)