Projet

Général

Profil

0001-templatetags-allow-list-filter-to-create-list-from-e.patch

Benjamin Dauvergne, 06 juillet 2022 09:40

Télécharger (3,37 ko)

Voir les différences:

Subject: [PATCH] templatetags: allow list filter to create list from elements
 (#67054)

 tests/test_formdata.py            |  4 ++--
 tests/test_templates.py           | 10 ++++++++++
 wcs/qommon/templatetags/qommon.py | 19 +++++++++++++++++--
 3 files changed, 29 insertions(+), 4 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_argument():
1299
    tmpl = Template('{{ foo|list: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
......
927 928

  
928 929

  
929 930
@register.filter(name='list')
930
def list_(value):
931
def list_(value, other=Ellipsis):
931 932
    # turn a generator into a list
932
    return list(unlazy(value))
933
    result = []
934

  
935
    def add_to_result(value):
936
        if isinstance(value, collections.abc.Iterable) and not isinstance(
937
            value, (collections.abc.Mapping, str, bytes)
938
        ):
939
            for elt in unlazy(value):
940
                result.append(elt)
941
        else:
942
            result.append(unlazy(value))
943

  
944
    add_to_result(value)
945
    if other is not Ellipsis:
946
        add_to_result(other)
947
    return result
933 948

  
934 949

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