From baf109b11a5d1175319f5bd804ec848f31075e0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 24 Jan 2020 15:12:27 +0100 Subject: [PATCH] manager: fix display of Januaries starting on week 52 or 53 (#39246) --- chrono/manager/views.py | 2 ++ tests/test_manager.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/chrono/manager/views.py b/chrono/manager/views.py index 49ee8258..91a574d9 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -459,6 +459,8 @@ class AgendaMonthView(AgendaDateView, MonthArchiveView): ) first_week_number = self.date.isocalendar()[1] + if first_week_number >= 52: + first_week_number = 0 last_month_day = self.get_next_month(self.date.date()) - datetime.timedelta(days=1) last_week_number = last_month_day.isocalendar()[1] diff --git a/tests/test_manager.py b/tests/test_manager.py index 1034de00..9f67b3f7 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -1952,6 +1952,21 @@ def test_agenda_month_view_dst_change(app, admin_user, manager_user, api_user): assert resp.text.count('height:33.0%;top:100.0%;') == 2 +def test_agenda_month_view_januaries(app, admin_user, manager_user, api_user): + agenda = Agenda.objects.create(label='Passports', kind='meetings') + desk = Desk.objects.create(agenda=agenda, label='Desk A') + meetingtype = MeetingType(agenda=agenda, label='passport', duration=20) + meetingtype.save() + TimePeriod(desk=desk, weekday=2, start_time=datetime.time(9, 0), end_time=datetime.time(12, 0)).save() + + for year in range(2020, 2030): + date = datetime.date(year, 1, 1) + with freezegun.freeze_time(date): + login(app) + resp = app.get('/manage/agendas/%s/%s/1/' % (agenda.id, date.year)) + assert resp.text.count('') in (4, 5) + + def test_agenda_view_event(app, manager_user): agenda = Agenda(label=u'Foo bar') agenda.view_role = manager_user.groups.all()[0]