From c17b0bc85ab0096728d206a058f946772611e480 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 | 9 +++++++++ 2 files changed, 39 insertions(+) diff --git a/tests/test_formdata.py b/tests/test_formdata.py index 68d2c2af2..1fd42e371 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 4919db110..4b65fd938 100644 --- a/wcs/qommon/templatetags/qommon.py +++ b/wcs/qommon/templatetags/qommon.py @@ -14,7 +14,10 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, see . +import datetime + 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 +69,12 @@ def parse_time(time_string): except (ValueError, TypeError): return None +@register.filter(expects_localtime=True, is_safe=False) +def date(value, arg=None): + if not isinstance(value, (datetime.datetime, datetime.date, datetime.time)): + value = parse_date(value) + return defaultfilters.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