[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) <rli@odoo.com>
This commit is contained in:
Lucas Lefèvre
2019-06-07 12:51:02 +00:00
parent 8dff37f3ec
commit 12ace54a9f
3 changed files with 36 additions and 4 deletions
+5
View File
@@ -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')
+30 -4
View File
@@ -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):
@@ -246,6 +246,7 @@
</div>
<field name="name" attrs="{'readonly': [('state', 'not in', ('draft', 'confirm'))]}"/>
<field name="user_id" invisible="1"/>
<field name="out_of_office_message"/>
</group>
<group name="col_right">