Projet

Général

Profil

0001-templatetags-handle-empty-strings-for-date-and-time-.patch

Thomas Noël, 17 juillet 2018 12:21

Télécharger (2,63 ko)

Voir les différences:

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(-)
tests/test_templates.py
99 99
    assert tmpl.render({'plop': '21/12/2017 10:32:42'}) == '21 32'
100 100
    assert tmpl.render({'plop': '21/12/2017 10h32'}) == '21 32'
101 101
    assert tmpl.render({'plop': 'x'}) == ''
102
    assert tmpl.render({'plop': None}) == ''
103
    assert tmpl.render({'plop': 3}) == ''
104
    assert tmpl.render({'plop': {'foo': 'bar'}}) == ''
105
    assert tmpl.render() == ''
102 106

  
103 107
    tmpl = Template('{{ plop|parse_date|date:"d" }}')
104 108
    assert tmpl.render({'plop': '2017-12-21'}) == '21'
105 109
    assert tmpl.render({'plop': '21/12/2017'}) == '21'
106 110
    assert tmpl.render({'plop': 'x'}) == ''
111
    assert tmpl.render({'plop': None}) == ''
112
    assert tmpl.render({'plop': 3}) == ''
113
    assert tmpl.render({'plop': {'foo': 'bar'}}) == ''
114
    assert tmpl.render() == ''
107 115

  
108 116
    tmpl = Template('{{ plop|parse_time|date:"H i" }}')
109 117
    assert tmpl.render({'plop': '10:32'}) == '10 32'
110 118
    assert tmpl.render({'plop': 'x'}) == ''
119
    assert tmpl.render({'plop': None}) == ''
120
    assert tmpl.render({'plop': 3}) == ''
121
    assert tmpl.render({'plop': {'foo': 'bar'}}) == ''
122
    assert tmpl.render() == ''
111 123

  
112 124
def test_variable_unicode_error_handling():
113 125
    tmpl = Template('{{ form_var_éléphant }}')
wcs/qommon/templatetags/qommon.py
35 35
    # fallback to Django function
36 36
    try:
37 37
        return dateparse.parse_date(date_string)
38
    except ValueError:
38
    except (ValueError, TypeError):
39 39
        return None
40 40

  
41 41
@register.filter
......
47 47
    # fallback to Django function
48 48
    try:
49 49
        return dateparse.parse_datetime(datetime_string)
50
    except ValueError:
50
    except (ValueError, TypeError):
51 51
        return None
52 52

  
53 53
@register.filter
54 54
def parse_time(time_string):
55 55
    try:
56 56
        return dateparse.parse_time(time_string)
57
    except ValueError:
57
    except (ValueError, TypeError):
58 58
        return None
59 59

  
60 60
@register.simple_tag
61
-