templates: add tests for datetime_in_past filter (#44023)

rename date_in_past into datetime_in_past
This commit is contained in:
Lauréline Guérin 2020-06-16 10:51:00 +02:00
parent c17a8f6cc5
commit 01feda7431
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 41 additions and 6 deletions

View File

@ -152,7 +152,7 @@
<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|date_in_past %}
{% 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 %}

View File

@ -42,7 +42,7 @@ from django.utils import dateparse, six
from django.utils.encoding import force_text
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.timezone import now
from django.utils.timezone import is_naive, make_aware
from combo.data.models import Page, Placeholder
from combo.public.menu import get_menu_context
@ -452,13 +452,16 @@ def age_in_months(value, today=None):
@register.filter(expects_localtime=True)
def date_in_past(value):
def datetime_in_past(value):
value = parse_datetime(value)
try:
return value <= now()
except TypeError:
if not value:
return False
if is_naive(value):
value = make_aware(value)
date_now = make_aware(datetime.datetime.now())
return value <= date_now
def parse_decimal(value, default=Decimal(0)):
if isinstance(value, six.string_types):

View File

@ -12,6 +12,7 @@ from django.test import override_settings
from django.test.client import RequestFactory
from django.contrib.auth.models import User, Group, AnonymousUser
from django.utils.six import StringIO
from django.utils.timezone import now
from combo.data.models import Page, TextCell
from combo.apps.assets.models import Asset
@ -511,6 +512,37 @@ def test_age_in():
assert tmpl.render(Context(context)) == 'Good'
@pytest.mark.parametrize('value, expected', [
(None, False),
('', False),
('foobar', False),
(42, False),
('1970-06-15T12:01:03', True),
('2500-06-15T12:01:02', False),
('1970-01-01 02:03', True),
('2500-01-01 02:03', False),
('01/01/1970 02h03', True),
('01/01/2500 02h03', False),
('1970-01-01', True),
('2500-01-01', False),
('01/01/1970', True),
('01/01/2500', False),
(datetime.datetime(1970, 6, 15, 12, 1, 3), True),
(datetime.datetime(2500, 6, 15, 12, 1, 2), False),
(datetime.date(1970, 6, 15), True),
(datetime.date(2500, 6, 15), False),
(datetime.datetime.now(), True),
(datetime.datetime.now() + datetime.timedelta(hours=1), False),
(now(), True),
(now() + datetime.timedelta(hours=1), False),
(datetime.date.today(), True),
(datetime.date.today() + datetime.timedelta(days=1), False),
])
def test_datetime_in_past(value, expected):
t = Template('{{ value|datetime_in_past }}')
assert t.render(Context({'value': value})) == str(expected)
def test_decimal_templatetag():
tmpl = Template('{{ plop|decimal }}')
assert tmpl.render(Context({'plop': 'toto'})) == '0'