Projet

Général

Profil

0001-misc-add-as_template-filter-49467.patch

Lauréline Guérin, 10 juin 2022 12:26

Télécharger (4 ko)

Voir les différences:

Subject: [PATCH] misc: add |as_template filter (#49467)

 tests/form_pages/test_live.py     | 47 +++++++++++++++++++++++++++++++
 tests/test_templates.py           | 16 +++++++++++
 wcs/qommon/templatetags/qommon.py |  7 +++++
 3 files changed, 70 insertions(+)
tests/form_pages/test_live.py
1744 1744

  
1745 1745
    live_resp = app.post('/foo/live', params=resp.form.submit_fields())
1746 1746
    assert live_resp.json == {'result': {'1': {'visible': True}, '2': {'visible': True}}}
1747

  
1748

  
1749
def test_comment_from_card_field(pub):
1750
    create_user(pub)
1751

  
1752
    CardDef.wipe()
1753
    carddef = CardDef()
1754
    carddef.name = 'Template'
1755
    carddef.digest_templates = {'default': '{{ form_var_template }}'}
1756
    carddef.fields = [
1757
        fields.StringField(id='0', label='string', varname='template'),
1758
    ]
1759
    carddef.store()
1760
    carddef.data_class().wipe()
1761
    for i, value in enumerate(['foo', 'bar']):
1762
        carddata = carddef.data_class()()
1763
        carddata.data = {
1764
            '0': "%s {{ form_var_foo }}" % value,
1765
        }
1766
        carddata.just_created()
1767
        carddata.store()
1768

  
1769
    ds = {'type': 'carddef:%s' % carddef.url_name}
1770
    FormDef.wipe()
1771
    formdef = FormDef()
1772
    formdef.name = 'test'
1773
    formdef.fields = [
1774
        fields.StringField(id='0', label='string', varname='foo'),
1775
        fields.ItemField(id='1', label='card', type='item', varname='card', data_source=ds),
1776
        fields.CommentField(
1777
            id='3',
1778
            label='X{{ form_var_card_live_var_template }}Y{{ form_var_card_live_var_template|as_template }}Z',
1779
            type='comment',
1780
        ),
1781
    ]
1782
    formdef.store()
1783
    formdef.data_class().wipe()
1784

  
1785
    app = get_app(pub)
1786
    resp = app.get('/test/')
1787
    resp.form['f0'] = 'plop'
1788
    resp.form['f1'] = '1'
1789
    live_resp = app.post('/test/live', params=resp.form.submit_fields())
1790
    assert live_resp.json['result']['3']['content'] == '<p>Xfoo {{ form_var_foo }}Yfoo plopZ</p>'
1791
    resp.form['f1'] = '2'
1792
    live_resp = app.post('/test/live', params=resp.form.submit_fields())
1793
    assert live_resp.json['result']['3']['content'] == '<p>Xbar {{ form_var_foo }}Ybar plopZ</p>'
tests/test_templates.py
1427 1427
            assert pub.has_cached_complex_data(img)
1428 1428
            value = pub.get_cached_complex_data(img)
1429 1429
            assert value is False
1430

  
1431

  
1432
def test_as_template(pub):
1433
    FormDef.wipe()
1434
    formdef = FormDef()
1435
    formdef.name = 'foobar'
1436
    formdef.fields = [fields.StringField(id='1', label='Test', type='string', varname='foo')]
1437
    formdef.store()
1438

  
1439
    formdata = formdef.data_class()()
1440
    formdata.data = {'1': 'Foo Bar'}
1441
    formdata.store()
1442
    pub.substitutions.feed(formdata)
1443
    context = {'template': 'Hello {{ form_var_foo }}'}
1444
    assert Template('{{ template }}').render(context) == 'Hello {{ form_var_foo }}'
1445
    assert Template('{{ template|as_template }}').render(context) == 'Hello Foo Bar'
wcs/qommon/templatetags/qommon.py
964 964
    if context.get('allow_complex'):
965 965
        return get_publisher().cache_complex_data(value, '<block value>')
966 966
    return value  # mostly non-useful
967

  
968

  
969
@register.filter
970
def as_template(value):
971
    from wcs.workflows import WorkflowStatusItem
972

  
973
    return WorkflowStatusItem.compute(unlazy(value))
967
-