From d8399d3b3805ceb63b48cef9ae7d7646477c83d1 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Wed, 23 Nov 2022 11:08:00 +0100 Subject: [PATCH] manager: do not display shared custody slots before agenda date start (#71588) --- ...ager_shared_custody_agenda_month_view.html | 6 ++- tests/manager/test_shared_custody_agenda.py | 40 ++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/chrono/manager/templates/chrono/manager_shared_custody_agenda_month_view.html b/chrono/manager/templates/chrono/manager_shared_custody_agenda_month_view.html index 84bcc8ff..69bf1714 100644 --- a/chrono/manager/templates/chrono/manager_shared_custody_agenda_month_view.html +++ b/chrono/manager/templates/chrono/manager_shared_custody_agenda_month_view.html @@ -18,7 +18,11 @@ {% trans "Week" %} {{ week }} {% for slot in slots %} - {{ slot }} + {% if slot.date < agenda.date_start %} + + {% else %} + {{ slot }} + {% endif %} {% endfor %} diff --git a/tests/manager/test_shared_custody_agenda.py b/tests/manager/test_shared_custody_agenda.py index 7e69de47..0036aef0 100644 --- a/tests/manager/test_shared_custody_agenda.py +++ b/tests/manager/test_shared_custody_agenda.py @@ -157,7 +157,7 @@ def test_shared_custody_agenda_month_view(app, admin_user): father = Person.objects.create(user_external_id='father_id', first_name='John', last_name='Doe') mother = Person.objects.create(user_external_id='mother_id', first_name='Jane', last_name='Doe') agenda = SharedCustodyAgenda.objects.create( - first_guardian=father, second_guardian=mother, date_start=now() + first_guardian=father, second_guardian=mother, date_start=datetime.date(2022, 1, 1) ) SharedCustodyRule.objects.create(agenda=agenda, guardian=father, days=list(range(7)), weeks='even') @@ -211,6 +211,44 @@ def test_shared_custody_agenda_month_view(app, admin_user): app.get('/manage/shared-custody/%s/42/42/' % agenda.pk, status=404) +@pytest.mark.freeze_time('2022-02-01 14:00') # Tuesday +def test_shared_custody_agenda_month_view_date_start(app, admin_user): + father = Person.objects.create(user_external_id='father_id', first_name='John', last_name='Doe') + mother = Person.objects.create(user_external_id='mother_id', first_name='Jane', last_name='Doe') + agenda = SharedCustodyAgenda.objects.create( + first_guardian=father, second_guardian=mother, date_start=datetime.date(2022, 1, 1) + ) + SharedCustodyRule.objects.create(agenda=agenda, guardian=father, days=list(range(7))) + + app = login(app) + + # custody for the whole month + resp = app.get('/manage/shared-custody/%s/' % agenda.pk).follow() + assert resp.text.count('') == 0 + assert len([x.text for x in resp.pyquery('tbody tr td.guardian')]) == 35 + + # all days are shown + days = [x.text for x in resp.pyquery('tbody tr th span')] + assert len(days) == 7 * 5 + + # custody for half the month + agenda.date_start = datetime.date(2022, 2, 14) + agenda.save() + + resp = app.get('/manage/shared-custody/%s/' % agenda.pk).follow() + assert resp.text.count('') == 14 + assert len([x.text for x in resp.pyquery('tbody tr td.guardian')]) == 21 + + # all days are still shown + new_days = [x.text for x in resp.pyquery('tbody tr th span')] + assert days == new_days + + # month before date_start + resp = resp.click('←') + assert resp.text.count('') == 42 + assert len([x.text for x in resp.pyquery('tbody tr td.guardian')]) == 0 + + def test_shared_custody_agenda_month_view_queries(app, admin_user): father = Person.objects.create(user_external_id='father_id', first_name='John', last_name='Doe') mother = Person.objects.create(user_external_id='mother_id', first_name='Jane', last_name='Doe')