From 638b7a4e474114c0ea45336de1589d238711dd2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 30 Aug 2018 20:51:58 +0200 Subject: [PATCH] misc: extend |date filter to support more input types (#25976) --- tests/test_formdata.py | 30 ++++++++++++++++++++++++++++++ wcs/qommon/templatetags/qommon.py | 5 +++++ 2 files changed, 35 insertions(+) diff --git a/tests/test_formdata.py b/tests/test_formdata.py index 68d2c2af..1fd42e37 100644 --- a/tests/test_formdata.py +++ b/tests/test_formdata.py @@ -716,3 +716,33 @@ def test_form_digest_date(pub): formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')} formdata.store() assert formdef.data_class().get(formdata.id).digest == 'plop 12/05/2015 plop' + + formdef.digest_template = 'plop {{ form_var_date|date:"Y" }} plop' + formdef.store() + formdata = formdef.data_class()() + formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')} + formdata.store() + assert formdef.data_class().get(formdata.id).digest == 'plop 2015 plop' + + formdef.digest_template = 'plop {{ form_var_date_raw|date:"Y" }} plop' + formdef.store() + formdata = formdef.data_class()() + formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')} + formdata.store() + assert formdef.data_class().get(formdata.id).digest == 'plop 2015 plop' + + formdef.digest_template = 'plop {{ form_var_date|date:"Y" }} plop' + formdef.store() + formdata = formdef.data_class()() + formdata.data = {'0': None} + formdata.store() + assert formdef.data_class().get(formdata.id).digest == 'plop plop' + + + + formdef.digest_template = 'plop {{ form_var|date:"Y" }} plop' + formdef.store() + formdata = formdef.data_class()() + formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')} + formdata.store() + assert formdef.data_class().get(formdata.id).digest == 'plop plop' diff --git a/wcs/qommon/templatetags/qommon.py b/wcs/qommon/templatetags/qommon.py index 4919db11..04fe88fb 100644 --- a/wcs/qommon/templatetags/qommon.py +++ b/wcs/qommon/templatetags/qommon.py @@ -15,6 +15,7 @@ # along with this program; if not, see . from django import template +from django.template import defaultfilters from django.utils import dateparse from django.utils.safestring import mark_safe from wcs.qommon import evalutils @@ -66,6 +67,10 @@ def parse_time(time_string): except (ValueError, TypeError): return None +@register.filter(expects_localtime=True, is_safe=False) +def date(value, arg=None): + return defaultfilters.date(parse_date(value), arg=arg) + @register.simple_tag def standard_text(text_id): return mark_safe(TextsDirectory.get_html_text(str(text_id))) -- 2.18.0