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]