From 08f590726d9ee63215cb83f69c195163c7a58ff9 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Tue, 17 Jul 2018 12:15:50 +0200 Subject: [PATCH] templatetags: handle empty strings for date and time parsers (#25314) --- tests/test_templates.py | 12 ++++++++++++ wcs/qommon/templatetags/qommon.py | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/tests/test_templates.py b/tests/test_templates.py index 28396e20..00ccc1dd 100644 --- a/tests/test_templates.py +++ b/tests/test_templates.py @@ -99,15 +99,27 @@ def test_datetime_templatetags(): assert tmpl.render({'plop': '21/12/2017 10:32:42'}) == '21 32' assert tmpl.render({'plop': '21/12/2017 10h32'}) == '21 32' assert tmpl.render({'plop': 'x'}) == '' + assert tmpl.render({'plop': None}) == '' + assert tmpl.render({'plop': 3}) == '' + assert tmpl.render({'plop': {'foo': 'bar'}}) == '' + assert tmpl.render() == '' tmpl = Template('{{ plop|parse_date|date:"d" }}') assert tmpl.render({'plop': '2017-12-21'}) == '21' assert tmpl.render({'plop': '21/12/2017'}) == '21' assert tmpl.render({'plop': 'x'}) == '' + assert tmpl.render({'plop': None}) == '' + assert tmpl.render({'plop': 3}) == '' + assert tmpl.render({'plop': {'foo': 'bar'}}) == '' + assert tmpl.render() == '' tmpl = Template('{{ plop|parse_time|date:"H i" }}') assert tmpl.render({'plop': '10:32'}) == '10 32' assert tmpl.render({'plop': 'x'}) == '' + assert tmpl.render({'plop': None}) == '' + assert tmpl.render({'plop': 3}) == '' + assert tmpl.render({'plop': {'foo': 'bar'}}) == '' + assert tmpl.render() == '' def test_variable_unicode_error_handling(): tmpl = Template('{{ form_var_éléphant }}') diff --git a/wcs/qommon/templatetags/qommon.py b/wcs/qommon/templatetags/qommon.py index 0f406886..422b4a2f 100644 --- a/wcs/qommon/templatetags/qommon.py +++ b/wcs/qommon/templatetags/qommon.py @@ -35,7 +35,7 @@ def parse_date(date_string): # fallback to Django function try: return dateparse.parse_date(date_string) - except ValueError: + except (ValueError, TypeError): return None @register.filter @@ -47,14 +47,14 @@ def parse_datetime(datetime_string): # fallback to Django function try: return dateparse.parse_datetime(datetime_string) - except ValueError: + except (ValueError, TypeError): return None @register.filter def parse_time(time_string): try: return dateparse.parse_time(time_string) - except ValueError: + except (ValueError, TypeError): return None @register.simple_tag -- 2.18.0