misc: fix handling of events close to midnight (#29142)
This commit is contained in:
parent
662a7b5f5e
commit
2016735664
|
@ -230,7 +230,7 @@ class TimePeriod(models.Model):
|
|||
while event_datetime < max_datetime:
|
||||
end_time = event_datetime + meeting_duration
|
||||
next_time = event_datetime + duration
|
||||
if end_time.time() > self.end_time:
|
||||
if end_time.time() > self.end_time or event_datetime.date() != next_time.date():
|
||||
# back to morning
|
||||
event_datetime = event_datetime.replace(hour=self.start_time.hour, minute=self.start_time.minute)
|
||||
# but next week
|
||||
|
|
|
@ -191,3 +191,25 @@ def test_desk_opening_hours():
|
|||
|
||||
assert localtime(hours[2].begin).time() == datetime.time(14, 0)
|
||||
assert localtime(hours[2].end).time() == datetime.time(17, 0)
|
||||
|
||||
|
||||
def test_timeperiod_midnight_overlap_time_slots():
|
||||
# https://dev.entrouvert.org/issues/29142
|
||||
agenda = Agenda(label=u'Foo bar', slug='bar')
|
||||
agenda.save()
|
||||
desk = Desk.objects.create(label='Desk 1', agenda=agenda)
|
||||
meeting_type = MeetingType(duration=120, agenda=agenda)
|
||||
meeting_type.save()
|
||||
timeperiod = TimePeriod(desk=desk, weekday=0,
|
||||
start_time=datetime.time(21, 0),
|
||||
end_time=datetime.time(23, 0))
|
||||
events = timeperiod.get_time_slots(
|
||||
min_datetime=make_aware(datetime.datetime(2016, 9, 1)),
|
||||
max_datetime=make_aware(datetime.datetime(2016, 10, 1)),
|
||||
meeting_type=meeting_type)
|
||||
events = list(sorted(events, key=lambda x: x.start_datetime))
|
||||
assert events[0].start_datetime.timetuple()[:5] == (2016, 9, 5, 21, 0)
|
||||
assert events[1].start_datetime.timetuple()[:5] == (2016, 9, 12, 21, 0)
|
||||
assert events[2].start_datetime.timetuple()[:5] == (2016, 9, 19, 21, 0)
|
||||
assert events[3].start_datetime.timetuple()[:5] == (2016, 9, 26, 21, 0)
|
||||
assert len(events) == 4
|
||||
|
|
Loading…
Reference in New Issue