templates: add tests for datetime_in_past filter (#44023)
rename date_in_past into datetime_in_past
This commit is contained in:
parent
c17a8f6cc5
commit
01feda7431
|
@ -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 %}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue