templates: add datetime_in_past filter (#44023)
This commit is contained in:
parent
d068f7b2b2
commit
7624c55e66
|
@ -10,10 +10,10 @@ except ImportError:
|
|||
langdetect = None
|
||||
|
||||
from django.test import override_settings
|
||||
from django.utils.timezone import now
|
||||
from quixote import cleanup
|
||||
from wcs.qommon.substitution import CompatibilityNamesDict
|
||||
from wcs.qommon.template import Template, TemplateError
|
||||
from wcs.conditions import Condition
|
||||
from wcs.variables import LazyFormData
|
||||
from wcs.formdef import FormDef
|
||||
from wcs import fields
|
||||
|
@ -658,3 +658,34 @@ def test_language_detect():
|
|||
assert t.render({'plop': 'Good morning world'}) == 'en'
|
||||
assert t.render({'plop': 'Bonjour tout le monde'}) == 'fr'
|
||||
assert t.render({'plop': '2132133'}) == ''
|
||||
|
||||
|
||||
@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({'value': value}) == str(expected)
|
||||
|
|
|
@ -38,6 +38,7 @@ from django.utils import dateparse
|
|||
from django.utils import six
|
||||
from django.utils.encoding import force_bytes, force_text
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.timezone import is_naive, make_aware
|
||||
from wcs.qommon import evalutils
|
||||
from wcs.qommon import tokens
|
||||
from wcs.qommon.admin.texts import TextsDirectory
|
||||
|
@ -268,6 +269,18 @@ def age_in_months(value, today=None):
|
|||
return years*12 + months
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True)
|
||||
def datetime_in_past(value):
|
||||
value = parse_datetime(value)
|
||||
if not value:
|
||||
return False
|
||||
|
||||
if is_naive(value):
|
||||
value = make_aware(value)
|
||||
date_now = make_aware(datetime.datetime.now())
|
||||
return value <= date_now
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def standard_text(text_id):
|
||||
return mark_safe(TextsDirectory.get_html_text(str(text_id)))
|
||||
|
|
Loading…
Reference in New Issue