diff --git a/combo/data/models.py b/combo/data/models.py index 93f26212..a38cd470 100644 --- a/combo/data/models.py +++ b/combo/data/models.py @@ -738,6 +738,9 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)): return {} def is_visible(self, user=None): + validity_info = self.validity_info.all().first() + if validity_info is not None and validity_info.invalid_since and validity_info.invalid_since < now() - datetime.timedelta(days=2): + return False return element_is_visible(self, user=user) def is_relevant(self, context): diff --git a/tests/test_cells.py b/tests/test_cells.py index 624d0f62..ed74281d 100644 --- a/tests/test_cells.py +++ b/tests/test_cells.py @@ -1,3 +1,4 @@ +import datetime import json import mock import os @@ -6,7 +7,7 @@ import requests from combo.data.models import ( Page, CellBase, TextCell, LinkCell, MenuCell, JsonCellBase, - JsonCell, ConfigJsonCell, LinkListCell + JsonCell, ConfigJsonCell, LinkListCell, ValidityInfo ) from django.conf import settings from django.db import connection @@ -18,6 +19,7 @@ from django.test.utils import CaptureQueriesContext from django.contrib.auth.models import User from django.core.urlresolvers import reverse from django.utils.encoding import force_text, force_bytes +from django.utils.timezone import now from combo.data.library import get_cell_classes from combo.utils import NothingInCacheException @@ -787,3 +789,21 @@ def test_link_list_cell_duplicate(): assert new_item.title == item.title assert new_item.url == item.url assert new_item.link_page == item.link_page + + +def test_cell_is_visible(): + page = Page.objects.create() + cell = TextCell.objects.create(page=page, order=0) + assert cell.is_visible() is True + + # invalid cell since just now + validity_info = ValidityInfo.objects.create(content_object=cell) + validity_info.invalid_reason_code = 'FOO' + validity_info.invalid_since = now() + validity_info.save() + assert cell.is_visible() is True + + # invalid cell since two days + validity_info.invalid_since = now() - datetime.timedelta(days=2) + validity_info.save() + assert cell.is_visible() is False