From e05bfbf546a9fcba310a0ed7d3a73b5a2899ad59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 20 Dec 2022 08:49:19 +0100 Subject: [PATCH] manager: display at least a period in week/month views (#72617) --- chrono/manager/views.py | 3 +++ tests/manager/test_all.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/chrono/manager/views.py b/chrono/manager/views.py index e4546e99..9915968a 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -1515,6 +1515,9 @@ class AgendaWeekMonthMixin: interval = datetime.timedelta(minutes=60) period = self.date.replace(hour=self.min_display.hour, minute=0) max_date = self.date.replace(hour=self.max_display.hour, minute=0) + if period == max_date: + # add at least an interval + max_date = max_date + interval periods = [] while period < max_date: diff --git a/tests/manager/test_all.py b/tests/manager/test_all.py index 23d2bbd0..876d5735 100644 --- a/tests/manager/test_all.py +++ b/tests/manager/test_all.py @@ -1739,6 +1739,23 @@ def test_agenda_month_view_weekend(app, admin_user, kind): assert 'Saturday' in resp.text +def test_agenda_meetings_view_opening_not_even_an_hour(app, admin_user): + month, year = 1, 2019 + monday = 0 + agenda = Agenda.objects.create(label='Passeports', kind='meetings') + desk = Desk.objects.create(agenda=agenda, label='Desk A') + TimePeriod.objects.create( + desk=desk, weekday=monday, start_time=datetime.time(10, 0), end_time=datetime.time(10, 30) + ) + + login(app) + resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.id, year, month)) + assert resp.pyquery('.opening-hours').length == 4 # four weeks + + resp = app.get('/manage/agendas/%s/%s/week/10/' % (agenda.id, year)) + assert resp.pyquery('.opening-hours').length == 1 + + @pytest.mark.parametrize('kind', ['meetings', 'virtual']) def test_agenda_month_view_dst_change(app, admin_user, kind): if kind == 'meetings':