cells: don't hide invalid link list cell (#44795)

This commit is contained in:
Lauréline Guérin 2020-07-17 16:10:06 +02:00
parent 94bd9c0929
commit 7d2ab21ad7
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
5 changed files with 29 additions and 11 deletions

View File

@ -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()

View File

@ -15,7 +15,13 @@
{{ link|truncatechars:100 }}
{% with link.get_invalid_reason as invalid_reason %}
{% if invalid_reason %}
<span class="invalid">{{ invalid_reason }}</span>
<span class="invalid">{{ 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 %}
</span>
{% endif %}
{% endwith %}
</span>

View File

@ -151,13 +151,13 @@
{% endif %}
<span class="additional-label"><i>{{cell.get_additional_label|default_if_none:""}}</i></span>
{% if cell.get_invalid_reason %}
<span class="invalid">{{ 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 %}
</span>
<span class="invalid">{{ 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 %}</span>
{% endif %}
</span>
{% if not cell.public %}

View File

@ -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):

View File

@ -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 '<span class="invalid">Invalid link' in resp.text
assert 'This cell will no longer be displayed in 2 days.' in resp.text
assert '<span class="invalid">foo_bar_reason</span>' in resp.text
assert '<span class="invalid">Invalid link</span>' in resp.text
assert '<span class="invalid">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 '<span class="invalid">Invalid link</span>' in resp.text
assert '<span class="invalid">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):