0001-cells-don-t-hide-invalid-link-list-cell-44795.patch
combo/data/models.py | ||
---|---|---|
1338 | 1338 |
for link in self.get_items(): |
1339 | 1339 |
link.duplicate(page_target=new_cell.page, placeholder=new_cell.link_placeholder) |
1340 | 1340 | |
1341 |
def is_visible(self, check_validity_info=True, **kwargs): |
|
1342 |
# cell is visible even if items are invalid |
|
1343 |
return super().is_visible(check_validity_info=False, **kwargs) |
|
1344 | ||
1341 | 1345 |
def check_validity(self): |
1342 | 1346 |
for link in self.get_items(prefetch_validity_info=True): |
1343 | 1347 |
validity_info = link.get_validity_info() |
combo/data/templates/combo/manager/link-list-cell-form.html | ||
---|---|---|
15 | 15 |
{{ link|truncatechars:100 }} |
16 | 16 |
{% with link.get_invalid_reason as invalid_reason %} |
17 | 17 |
{% if invalid_reason %} |
18 |
<span class="invalid">{{ invalid_reason }}</span> |
|
18 |
<span class="invalid">{{ invalid_reason }} - |
|
19 |
{% if cell.get_validity_info.invalid_datetime|datetime_in_past %} |
|
20 |
{% blocktrans with link.get_validity_info.invalid_datetime|date:"DATETIME_FORMAT" as invalidity_date %}This link is no longer displayed since {{ invalidity_date }}.{% endblocktrans %} |
|
21 |
{% else %} |
|
22 |
{% blocktrans with link.get_validity_info.invalid_datetime|timeuntil as invalidity_delay %}This link will no longer be displayed in {{ invalidity_delay }}.{% endblocktrans %} |
|
23 |
{% endif %} |
|
24 |
</span> |
|
19 | 25 |
{% endif %} |
20 | 26 |
{% endwith %} |
21 | 27 |
</span> |
combo/manager/templates/combo/page_view.html | ||
---|---|---|
151 | 151 |
{% endif %} |
152 | 152 |
<span class="additional-label"><i>{{cell.get_additional_label|default_if_none:""}}</i></span> |
153 | 153 |
{% if cell.get_invalid_reason %} |
154 |
<span class="invalid">{{ cell.get_invalid_reason }} - |
|
155 |
{% if cell.get_validity_info.invalid_datetime|datetime_in_past %} |
|
156 |
{% blocktrans with cell.get_validity_info.invalid_datetime|date:"DATETIME_FORMAT" as invalidity_date %}This cell is no longer displayed since {{ invalidity_date }}.{% endblocktrans %} |
|
157 |
{% else %} |
|
158 |
{% blocktrans with cell.get_validity_info.invalid_datetime|timeuntil as invalidity_delay %}This cell will no longer be displayed in {{ invalidity_delay }}.{% endblocktrans %} |
|
159 |
{% endif %} |
|
160 |
</span> |
|
154 |
<span class="invalid">{{ cell.get_invalid_reason }}{% if cell.class_name != 'link-list-cell' %} -
|
|
155 |
{% if cell.get_validity_info.invalid_datetime|datetime_in_past %}
|
|
156 |
{% blocktrans with cell.get_validity_info.invalid_datetime|date:"DATETIME_FORMAT" as invalidity_date %}This cell is no longer displayed since {{ invalidity_date }}.{% endblocktrans %}
|
|
157 |
{% else %}
|
|
158 |
{% blocktrans with cell.get_validity_info.invalid_datetime|timeuntil as invalidity_delay %}This cell will no longer be displayed in {{ invalidity_delay }}.{% endblocktrans %}
|
|
159 |
{% endif %}
|
|
160 |
{% endif %}</span>
|
|
161 | 161 |
{% endif %} |
162 | 162 |
</span> |
163 | 163 |
{% if not cell.public %} |
tests/test_cells.py | ||
---|---|---|
288 | 288 |
validity_info = ValidityInfo.objects.latest('pk') |
289 | 289 |
assert validity_info.invalid_reason_code == 'data_link_invalid' |
290 | 290 |
assert validity_info.invalid_since is not None |
291 |
validity_info.invalid_since = now() - datetime.timedelta(days=2) |
|
292 |
validity_info.save() |
|
293 |
assert cell.is_visible() # particular case: cell is visible |
|
291 | 294 | |
292 | 295 | |
293 | 296 |
def test_feed_cell_validity(context): |
tests/test_manager.py | ||
---|---|---|
211 | 211 |
item.mark_as_invalid('foo_bar_reason') |
212 | 212 |
cell2.check_validity() |
213 | 213 |
resp = app.get('/manage/pages/%s/' % page.pk) |
214 |
assert '<span class="invalid">Invalid link' in resp.text |
|
215 |
assert 'This cell will no longer be displayed in 2 days.' in resp.text |
|
216 |
assert '<span class="invalid">foo_bar_reason</span>' in resp.text |
|
214 |
assert '<span class="invalid">Invalid link</span>' in resp.text |
|
215 |
assert '<span class="invalid">foo_bar_reason' in resp.text |
|
216 |
assert 'This link will no longer be displayed in 2 days.' in resp.text |
|
217 |
ValidityInfo.objects.update(invalid_since=now() - datetime.timedelta(days=2)) |
|
218 |
resp = app.get('/manage/pages/%s/' % page.pk) |
|
219 |
assert '<span class="invalid">Invalid link</span>' in resp.text |
|
220 |
assert '<span class="invalid">foo_bar_reason' in resp.text |
|
221 |
assert 'This link is no longer displayed since June 5, 2020, noon.' in resp.text |
|
217 | 222 | |
218 | 223 | |
219 | 224 |
def test_edit_page_optional_placeholder(app, admin_user): |
220 |
- |