summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/calendar/models/calendar.py12
-rw-r--r--addons/calendar/tests/test_calendar.py17
2 files changed, 23 insertions, 6 deletions
diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py
index 25377659563..8ec5dcb195c 100644
--- a/addons/calendar/models/calendar.py
+++ b/addons/calendar/models/calendar.py
@@ -890,18 +890,18 @@ class Meeting(models.Model):
def _inverse_dates(self):
for meeting in self:
if meeting.allday:
- tz = pytz.timezone(self.env.user.tz) if self.env.user.tz else pytz.utc
+ # Convention break:
+ # stop and start are NOT in UTC in allday event
+ # in this case, they actually represent a date
+ # i.e. Christmas is on 25/12 for everyone
+ # even if people don't celebrate it simultaneously
enddate = fields.Datetime.from_string(meeting.stop_date)
- enddate = tz.localize(enddate)
enddate = enddate.replace(hour=18)
- enddate = enddate.astimezone(pytz.utc)
meeting.stop = fields.Datetime.to_string(enddate)
startdate = fields.Datetime.from_string(meeting.start_date)
- startdate = tz.localize(startdate) # Add "+hh:mm" timezone
- startdate = startdate.replace(hour=8) # Set 8 AM in localtime
- startdate = startdate.astimezone(pytz.utc) # Convert to UTC
+ startdate = startdate.replace(hour=8) # Set 8 AM
meeting.start = fields.Datetime.to_string(startdate)
else:
meeting.write({'start': meeting.start_datetime,
diff --git a/addons/calendar/tests/test_calendar.py b/addons/calendar/tests/test_calendar.py
index 12547c8f695..e04866f1f68 100644
--- a/addons/calendar/tests/test_calendar.py
+++ b/addons/calendar/tests/test_calendar.py
@@ -275,3 +275,20 @@ class TestCalendar(TransactionCase):
self.assertEqual(test_event.res_model, test_record._name)
self.assertEqual(test_event.res_id, test_record.id)
self.assertEqual(len(test_record.activity_ids), 1)
+
+ def test_event_allday(self):
+ self.env.user.tz = 'Pacific/Honolulu'
+
+ event = self.CalendarEvent.create({
+ 'name': 'All Day',
+ 'start': "2018-10-16 00:00:00",
+ 'start_date': "2018-10-16",
+ 'start_datetime': False,
+ 'stop': "2018-10-18 00:00:00",
+ 'stop_date': "2018-10-18",
+ 'stop_datetime': False,
+ 'allday': True,
+ })
+
+ self.assertEqual(event.start, '2018-10-16 08:00:00')
+ self.assertEqual(event.stop, '2018-10-18 18:00:00')