cells: a cell is not visible after 2 days of invalidity (#38009)

This commit is contained in:
Lauréline Guérin 2020-02-17 10:08:24 +01:00
parent 957864921b
commit 39234986fe
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 24 additions and 1 deletions

View File

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

View File

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