From 7d2ab21ad742eab440c4eeb91cb423f907b8b656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Fri, 17 Jul 2020 16:10:06 +0200 Subject: [PATCH] cells: don't hide invalid link list cell (#44795) --- combo/data/models.py | 4 ++++ .../combo/manager/link-list-cell-form.html | 8 +++++++- combo/manager/templates/combo/page_view.html | 14 +++++++------- tests/test_cells.py | 3 +++ tests/test_manager.py | 11 ++++++++--- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/combo/data/models.py b/combo/data/models.py index daf7ee2a..6cdab0de 100644 --- a/combo/data/models.py +++ b/combo/data/models.py @@ -1338,6 +1338,10 @@ class LinkListCell(CellBase): for link in self.get_items(): link.duplicate(page_target=new_cell.page, placeholder=new_cell.link_placeholder) + def is_visible(self, check_validity_info=True, **kwargs): + # cell is visible even if items are invalid + return super().is_visible(check_validity_info=False, **kwargs) + def check_validity(self): for link in self.get_items(prefetch_validity_info=True): validity_info = link.get_validity_info() diff --git a/combo/data/templates/combo/manager/link-list-cell-form.html b/combo/data/templates/combo/manager/link-list-cell-form.html index 647dc417..b5634a01 100644 --- a/combo/data/templates/combo/manager/link-list-cell-form.html +++ b/combo/data/templates/combo/manager/link-list-cell-form.html @@ -15,7 +15,13 @@ {{ link|truncatechars:100 }} {% with link.get_invalid_reason as invalid_reason %} {% if invalid_reason %} - {{ invalid_reason }} + {{ invalid_reason }} - + {% if cell.get_validity_info.invalid_datetime|datetime_in_past %} + {% blocktrans with link.get_validity_info.invalid_datetime|date:"DATETIME_FORMAT" as invalidity_date %}This link is no longer displayed since {{ invalidity_date }}.{% endblocktrans %} + {% else %} + {% blocktrans with link.get_validity_info.invalid_datetime|timeuntil as invalidity_delay %}This link will no longer be displayed in {{ invalidity_delay }}.{% endblocktrans %} + {% endif %} + {% endif %} {% endwith %} diff --git a/combo/manager/templates/combo/page_view.html b/combo/manager/templates/combo/page_view.html index f12c9b78..d5e0cb95 100644 --- a/combo/manager/templates/combo/page_view.html +++ b/combo/manager/templates/combo/page_view.html @@ -151,13 +151,13 @@ {% endif %} {{cell.get_additional_label|default_if_none:""}} {% if cell.get_invalid_reason %} - {{ cell.get_invalid_reason }} - - {% if cell.get_validity_info.invalid_datetime|datetime_in_past %} - {% blocktrans with cell.get_validity_info.invalid_datetime|date:"DATETIME_FORMAT" as invalidity_date %}This cell is no longer displayed since {{ invalidity_date }}.{% endblocktrans %} - {% else %} - {% blocktrans with cell.get_validity_info.invalid_datetime|timeuntil as invalidity_delay %}This cell will no longer be displayed in {{ invalidity_delay }}.{% endblocktrans %} - {% endif %} - + {{ cell.get_invalid_reason }}{% if cell.class_name != 'link-list-cell' %} - + {% if cell.get_validity_info.invalid_datetime|datetime_in_past %} + {% blocktrans with cell.get_validity_info.invalid_datetime|date:"DATETIME_FORMAT" as invalidity_date %}This cell is no longer displayed since {{ invalidity_date }}.{% endblocktrans %} + {% else %} + {% blocktrans with cell.get_validity_info.invalid_datetime|timeuntil as invalidity_delay %}This cell will no longer be displayed in {{ invalidity_delay }}.{% endblocktrans %} + {% endif %} + {% endif %} {% endif %} {% if not cell.public %} diff --git a/tests/test_cells.py b/tests/test_cells.py index 4c39c64e..89b5a4a5 100644 --- a/tests/test_cells.py +++ b/tests/test_cells.py @@ -288,6 +288,9 @@ def test_link_list_cell_validity(): validity_info = ValidityInfo.objects.latest('pk') assert validity_info.invalid_reason_code == 'data_link_invalid' assert validity_info.invalid_since is not None + validity_info.invalid_since = now() - datetime.timedelta(days=2) + validity_info.save() + assert cell.is_visible() # particular case: cell is visible def test_feed_cell_validity(context): diff --git a/tests/test_manager.py b/tests/test_manager.py index 688d29e2..2fe303f5 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -211,9 +211,14 @@ def test_edit_page_cell_invalid_placeholder(freezer, app, admin_user): item.mark_as_invalid('foo_bar_reason') cell2.check_validity() resp = app.get('/manage/pages/%s/' % page.pk) - assert 'Invalid link' in resp.text - assert 'This cell will no longer be displayed in 2 days.' in resp.text - assert 'foo_bar_reason' in resp.text + assert 'Invalid link' in resp.text + assert 'foo_bar_reason' in resp.text + assert 'This link will no longer be displayed in 2 days.' in resp.text + ValidityInfo.objects.update(invalid_since=now() - datetime.timedelta(days=2)) + resp = app.get('/manage/pages/%s/' % page.pk) + assert 'Invalid link' in resp.text + assert 'foo_bar_reason' in resp.text + assert 'This link is no longer displayed since June 5, 2020, noon.' in resp.text def test_edit_page_optional_placeholder(app, admin_user):