Projet

Général

Profil

0001-misc-fix-handling-of-events-close-to-midnight-29142.patch

Frédéric Péters, 17 décembre 2018 19:02

Télécharger (2,49 ko)

Voir les différences:

Subject: [PATCH] misc: fix handling of events close to midnight (#29142)

 chrono/agendas/models.py   |  2 +-
 tests/test_time_periods.py | 22 ++++++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)
chrono/agendas/models.py
230 230
        while event_datetime < max_datetime:
231 231
            end_time = event_datetime + meeting_duration
232 232
            next_time = event_datetime + duration
233
            if end_time.time() > self.end_time:
233
            if end_time.time() > self.end_time or event_datetime.date() != next_time.date():
234 234
                # back to morning
235 235
                event_datetime = event_datetime.replace(hour=self.start_time.hour, minute=self.start_time.minute)
236 236
                # but next week
tests/test_time_periods.py
191 191

  
192 192
    assert localtime(hours[2].begin).time() == datetime.time(14, 0)
193 193
    assert localtime(hours[2].end).time() == datetime.time(17, 0)
194

  
195

  
196
def test_timeperiod_midnight_overlap_time_slots():
197
    # https://dev.entrouvert.org/issues/29142
198
    agenda = Agenda(label=u'Foo bar', slug='bar')
199
    agenda.save()
200
    desk = Desk.objects.create(label='Desk 1', agenda=agenda)
201
    meeting_type = MeetingType(duration=120, agenda=agenda)
202
    meeting_type.save()
203
    timeperiod = TimePeriod(desk=desk, weekday=0,
204
            start_time=datetime.time(21, 0),
205
            end_time=datetime.time(23, 0))
206
    events = timeperiod.get_time_slots(
207
            min_datetime=make_aware(datetime.datetime(2016, 9, 1)),
208
            max_datetime=make_aware(datetime.datetime(2016, 10, 1)),
209
            meeting_type=meeting_type)
210
    events = list(sorted(events, key=lambda x: x.start_datetime))
211
    assert events[0].start_datetime.timetuple()[:5] == (2016, 9, 5, 21, 0)
212
    assert events[1].start_datetime.timetuple()[:5] == (2016, 9, 12, 21, 0)
213
    assert events[2].start_datetime.timetuple()[:5] == (2016, 9, 19, 21, 0)
214
    assert events[3].start_datetime.timetuple()[:5] == (2016, 9, 26, 21, 0)
215
    assert len(events) == 4
194
-