diff --git a/combo/data/models.py b/combo/data/models.py
index dedbabad..97cb88f2 100644
--- a/combo/data/models.py
+++ b/combo/data/models.py
@@ -547,6 +547,12 @@ class ValidityInfo(models.Model):
class Meta:
unique_together = [('content_type', 'object_id')]
+ @property
+ def invalid_datetime(self):
+ if not self.invalid_since:
+ return
+ return self.invalid_since + datetime.timedelta(days=2)
+
class CellMeta(MediaDefiningClass, ModelBase):
pass
@@ -917,7 +923,7 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)):
def is_visible(self, user=None, check_validity_info=True):
if check_validity_info:
validity_info = self.get_validity_info()
- if validity_info is not None and validity_info.invalid_since and validity_info.invalid_since < now() - datetime.timedelta(days=2):
+ if validity_info is not None and validity_info.invalid_datetime and validity_info.invalid_datetime <= now():
return False
return element_is_visible(self, user=user)
diff --git a/combo/manager/templates/combo/page_view.html b/combo/manager/templates/combo/page_view.html
index e9a14bbb..2b4d6885 100644
--- a/combo/manager/templates/combo/page_view.html
+++ b/combo/manager/templates/combo/page_view.html
@@ -150,11 +150,15 @@
{% endif %}
{{cell.get_additional_label|default_if_none:""}}
- {% with cell.get_invalid_reason as invalid_reason %}
- {% if invalid_reason %}
- {{ invalid_reason }}
+ {% if cell.get_invalid_reason %}
+ {{ cell.get_invalid_reason }} -
+ {% if cell.get_validity_info.invalid_datetime|date_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 %}
- {% endwith %}
{% if not cell.public %}
foo_bar_reason' in resp.text
+ assert 'foo_bar_reason' in resp.text
+ assert 'This cell will no longer be displayed in 1 day, 23 hours' in resp.text
- cell.mark_as_invalid('another_foo_bar_reason', force=False)
- validity_info.refresh_from_db()
- assert old_reason == validity_info.invalid_reason_code
- assert old_date == validity_info.invalid_since
+ ValidityInfo.objects.update(invalid_since=now() - datetime.timedelta(minutes=47*60-1))
+ resp = app.get('/manage/pages/%s/' % page.pk)
+ assert 'foo_bar_reason' in resp.text
+ assert 'This cell will no longer be displayed in 1 hour, 1 minute.' in resp.text
- cell.mark_as_invalid('another_foo_bar_reason')
- validity_info.refresh_from_db()
- assert validity_info.invalid_reason_code == 'another_foo_bar_reason'
- assert old_date < validity_info.invalid_since
+ ValidityInfo.objects.update(invalid_since=now() - datetime.timedelta(minutes=47*60+29))
+ resp = app.get('/manage/pages/%s/' % page.pk)
+ assert 'foo_bar_reason' in resp.text
+ assert 'This cell will no longer be displayed in 31 minutes.' in resp.text
+
+ ValidityInfo.objects.update(invalid_since=now() - datetime.timedelta(days=2))
+ resp = app.get('/manage/pages/%s/' % page.pk)
+ assert 'foo_bar_reason' in resp.text
+ assert 'This cell is no longer displayed since June 5, 2020, noon.' in resp.text
+
+ ValidityInfo.objects.update(invalid_since=now() - datetime.timedelta(days=2, minutes=10*60+2))
+ resp = app.get('/manage/pages/%s/' % page.pk)
+ assert 'foo_bar_reason' in resp.text
+ assert 'This cell is no longer displayed since June 5, 2020, 1:58 a.m.' in resp.text
cell.mark_as_valid()
assert ValidityInfo.objects.exists() is False
resp = app.get('/manage/pages/%s/' % page.pk)
- assert 'foo_bar_reason' not in resp.text
+ assert 'foo_bar_reason' not in resp.text
cell2 = LinkListCell.objects.create(order=0, placeholder='content', page=page)
item = LinkCell.objects.create(page=page, placeholder=cell2.link_placeholder, order=0)
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 '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