diff --git a/addons/resource/models/resource_calendar_leaves.py b/addons/resource/models/resource_calendar_leaves.py index a9f1a27452b..03900e400f6 100644 --- a/addons/resource/models/resource_calendar_leaves.py +++ b/addons/resource/models/resource_calendar_leaves.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from datetime import datetime, time @@ -55,6 +54,8 @@ class ResourceCalendarLeaves(models.Model): def _compute_date_to(self): user_tz = timezone(self.env.user.tz or self._context.get('tz') or self.company_id.resource_calendar_id.tz or 'UTC') for leave in self: + if not leave.date_from: + continue date_to_tz = user_tz.localize(leave.date_from) + relativedelta(hour=23, minute=59, second=59) leave.date_to = date_to_tz.astimezone(utc).replace(tzinfo=None) diff --git a/addons/resource/tests/test_utils.py b/addons/resource/tests/test_utils.py index e262061d0e7..5dceabade1b 100644 --- a/addons/resource/tests/test_utils.py +++ b/addons/resource/tests/test_utils.py @@ -1,9 +1,11 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from dateutil.relativedelta import relativedelta +from odoo.fields import Datetime from odoo.tests.common import TransactionCase from odoo.osv.expression import normalize_domain from odoo.addons.resource.models import utils +from odoo.tests import Form class TestExpression(TransactionCase): @@ -57,3 +59,26 @@ class TestExpression(TransactionCase): field_name_mapping={'field3': 'field4'}, )) ) + + def test_resource_creation_with_date_from(self): + """ + Test resource creation with a date_from. + AssertError is raised when date_from is not provided. + """ + + with self.assertRaises(AssertionError): + with Form(self.env['resource.calendar.leaves']) as res: + res.date_from = False + res.date_to = Datetime.now() + + with Form(self.env['resource.calendar.leaves']) as res: + date_from = Datetime.now() + date_to = Datetime.now() + relativedelta(hours=24) + res.date_from = date_from + res.date_to = date_to + + self.assertFalse(res.id, 'The resource does not have an id before saving') + res.save() + self.assertTrue(res.id, 'The resource was successfully created') + self.assertEqual(res.date_from, Datetime.to_string(date_from)) + self.assertEqual(res.date_to, Datetime.to_string(date_to))