Projet

Général

Profil

0001-templatetags-user-list-add-filters-to-create-list-fr.patch

Benjamin Dauvergne, 06 juillet 2022 12:48

Télécharger (3,51 ko)

Voir les différences:

Subject: [PATCH] templatetags: user list/add filters to create list from
 simple values (#67054)

 tests/test_formdata.py            |  4 ++--
 tests/test_templates.py           | 10 ++++++++++
 wcs/qommon/templatetags/qommon.py | 13 ++++++++++++-
 3 files changed, 24 insertions(+), 3 deletions(-)
tests/test_formdata.py
2662 2662
    formdef.name = 'foobar'
2663 2663
    formdef.url_name = 'foobar'
2664 2664
    formdef.fields = [fields.DateField(id='0', label='date', varname='date')]
2665
    formdef.digest_templates = {'default': 'plop {{ form_var_date|list }} plop'}
2665
    formdef.digest_templates = {'default': 'plop {{ form_var_date|reproj:"coin"}} plop'}
2666 2666
    formdef.store()
2667 2667

  
2668 2668
    formdata = formdef.data_class()()
......
2677 2677

  
2678 2678
    formdef.digest_templates = {
2679 2679
        'default': 'plop plop',
2680
        'custom-view:foobar': 'plop {{ form_var_date|list }} plop',
2680
        'custom-view:foobar': 'plop {{ form_var_date|reproj:"coin" }} plop',
2681 2681
    }
2682 2682
    formdef.store()
2683 2683

  
tests/test_templates.py
1295 1295
    assert tmpl.render({'foo': list_range}) == '0'
1296 1296

  
1297 1297

  
1298
def test_convert_as_list_with_add():
1299
    tmpl = Template('{{ foo|list|add:bar|join:", " }}')
1300
    assert tmpl.render({'foo': [1, 2], 'bar': ['a', 'b']}) == '1, 2, a, b'
1301
    assert tmpl.render({'foo': [1, 2], 'bar': 'ab'}) == '1, 2, ab'
1302
    assert tmpl.render({'foo': 12, 'bar': ['a', 'b']}) == '12, a, b'
1303
    assert tmpl.render({'foo': 12, 'bar': 'ab'}) == '12, ab'
1304
    assert tmpl.render({'foo': [1, 2], 'bar': {'a': 'b'}}) == '1, 2, {'a': 'b'}'
1305
    assert tmpl.render({'foo': {'a': 'b'}, 'bar': ['a', 'b']}) == '{'a': 'b'}, a, b'
1306

  
1307

  
1298 1308
def test_adjust_to_week_monday(pub):
1299 1309
    t = Template('{{ value|adjust_to_week_monday }}')
1300 1310
    assert t.render({'value': '2021-06-13'}) == '2021-06-07'
wcs/qommon/templatetags/qommon.py
14 14
# You should have received a copy of the GNU General Public License
15 15
# along with this program; if not, see <http://www.gnu.org/licenses/>.
16 16

  
17
import collections.abc
17 18
import datetime
18 19
import hashlib
19 20
import io
......
569 570
    except (ArithmeticError, TypeError, ValueError):
570 571
        pass
571 572

  
573
    # append to term1 if term1 is a list and not term2
574
    if isinstance(term1, list) and not isinstance(term2, list):
575
        return list(term1) + [term2]
576

  
572 577
    # fallback to django add filter
573 578
    return defaultfilters.add(unlazy(term1), unlazy(term2))
574 579

  
......
929 934
@register.filter(name='list')
930 935
def list_(value):
931 936
    # turn a generator into a list
932
    return list(unlazy(value))
937
    real_value = unlazy(value)
938
    if isinstance(real_value, collections.abc.Iterable) and not isinstance(
939
        real_value, (collections.abc.Mapping, str)
940
    ):
941
        return list(real_value)
942
    else:
943
        return [real_value]
933 944

  
934 945

  
935 946
@register.filter(name='qrcode')
936
-