From 12ace54a9fa1fa357408f6ba68bce060c347755d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Lef=C3=A8vre?= Date: Wed, 5 Jun 2019 07:41:03 +0000 Subject: [PATCH] [FIX] hr_holidays: Fix out of office message default value If a user has an ooom in his Preferences, it should be used as the default value for a leave ooom. closes odoo/odoo#33890 Signed-off-by: Romain Libert (rli) --- addons/hr_holidays/models/hr_leave.py | 5 +++ .../hr_holidays/tests/test_out_of_office.py | 34 ++++++++++++++++--- addons/hr_holidays/views/hr_leave_views.xml | 1 + 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 4f34666cc7f..ac8b991c77d 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -266,6 +266,11 @@ class HolidaysRequest(models.Model): self.request_unit_hours = False self.request_unit_custom = False + @api.onchange('user_id') + def _onchange_user_id(self): + if not self.out_of_office_message: + self.out_of_office_message = self.user_id.out_of_office_message + @api.onchange('request_date_from_period', 'request_hour_from', 'request_hour_to', 'request_date_from', 'request_date_to', 'employee_id') diff --git a/addons/hr_holidays/tests/test_out_of_office.py b/addons/hr_holidays/tests/test_out_of_office.py index 05e3e480cc0..4c97f465ce1 100644 --- a/addons/hr_holidays/tests/test_out_of_office.py +++ b/addons/hr_holidays/tests/test_out_of_office.py @@ -4,26 +4,29 @@ from datetime import datetime from dateutil.relativedelta import relativedelta -from odoo.tests.common import tagged, users, warmup +from odoo.tests.common import tagged, users, warmup, Form from odoo.addons.hr_holidays.tests.common import TestHrHolidaysBase @tagged('out_of_office') class TestOutOfOffice(TestHrHolidaysBase): - def test_leave_ooo(self): - leave_type = self.env['hr.leave.type'].create({ + def setUp(self): + super().setUp() + self.leave_type = self.env['hr.leave.type'].create({ 'name': 'Legal Leaves', 'time_type': 'leave', 'allocation_type': 'no', }) + + def test_leave_ooo(self): self.assertNotEqual(self.employee_hruser.user_id.im_status, 'leave_offline', 'user should not be on leave') self.assertNotEqual(self.employee_hruser.user_id.partner_id.im_status, 'leave_offline', 'user should not be on leave') leave_date_end = (datetime.today() + relativedelta(days=3)) leave = self.env['hr.leave'].create({ 'name': 'Christmas', 'employee_id': self.employee_hruser.id, - 'holiday_status_id': leave_type.id, + 'holiday_status_id': self.leave_type.id, 'date_from': (datetime.today() - relativedelta(days=1)), 'date_to': leave_date_end, 'out_of_office_message': 'contact tde in case of problems', @@ -51,6 +54,29 @@ class TestOutOfOffice(TestHrHolidaysBase): self.assertEqual(infos[0]['direct_partner'][0]['out_of_office_date_end'], leave_date_end) self.assertEqual(infos[0]['direct_partner'][0]['out_of_office_message'], 'contact tde in case of problems') + def test_leave_ooo_use_default(self): + """ Out of office message from Preferences should be used as default value """ + self.user_hruser.out_of_office_message = 'contact xdo in case of problems' + + leave_form = Form(self.env['hr.leave'].sudo(self.user_hruser), view='hr_holidays.hr_leave_view_form') + leave_form.date_from = datetime.today() - relativedelta(days=1) + leave_form.date_to = datetime.today() + leave_form.holiday_status_id = self.leave_type + leave = leave_form.save() + self.assertEqual(leave.out_of_office_message, 'contact xdo in case of problems') + + def test_leave_ooo_overwrite_default(self): + """ Out of office message default value should be overwrittable """ + self.user_hruser.out_of_office_message = 'contact xdo in case of problems' + + leave_form = Form(self.env['hr.leave'].sudo(self.user_hruser), view='hr_holidays.hr_leave_view_form') + leave_form.date_from = datetime.today() - relativedelta(days=1) + leave_form.date_to = datetime.today() + leave_form.holiday_status_id = self.leave_type + leave_form.out_of_office_message = 'contact tde in case of problems' + leave = leave_form.save() + self.assertEqual(leave.out_of_office_message, 'contact tde in case of problems') + @tagged('out_of_office') class TestOutOfOfficePerformance(TestHrHolidaysBase): diff --git a/addons/hr_holidays/views/hr_leave_views.xml b/addons/hr_holidays/views/hr_leave_views.xml index e3596770217..7defea25e40 100644 --- a/addons/hr_holidays/views/hr_leave_views.xml +++ b/addons/hr_holidays/views/hr_leave_views.xml @@ -246,6 +246,7 @@ +