Projet

Général

Profil

0001-wcs-use-full-context-to-render-custom-title-and-fiel.patch

Lauréline Guérin, 17 décembre 2021 18:27

Télécharger (4,69 ko)

Voir les différences:

Subject: [PATCH] wcs: use full context to render custom title and fields
 (#58735)

 combo/apps/wcs/models.py |  7 ++++---
 tests/test_wcs.py        | 37 +++++++++++++++++++++++++++++++++++--
 2 files changed, 39 insertions(+), 5 deletions(-)
combo/apps/wcs/models.py
1039 1039

  
1040 1040
        if response.status_code == 200:
1041 1041
            extra_context['card'] = response.json()
1042
            context = Context(extra_context)
1042
            custom_context = Context(extra_context)
1043
            custom_context.update(context)
1043 1044
            if self.title_type == 'manual':
1044 1045
                try:
1045
                    extra_context['title'] = Template(self.custom_title).render(context)
1046
                    extra_context['title'] = Template(self.custom_title).render(custom_context)
1046 1047
                except (VariableDoesNotExist, TemplateSyntaxError):
1047 1048
                    extra_context['title'] = ''
1048 1049
            # auto title or custom_title gives an empty title, use default value + card text
......
1059 1060
                    try:
1060 1061
                        extra_context['card']['custom_fields'][item['template']] = Template(
1061 1062
                            item['template']
1062
                        ).render(context)
1063
                        ).render(custom_context)
1063 1064
                    except (VariableDoesNotExist, TemplateSyntaxError):
1064 1065
                        pass
1065 1066

  
tests/test_wcs.py
1811 1811

  
1812 1812

  
1813 1813
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
1814
def test_card_cell_render(mock_send, context):
1814
def test_card_cell_render(mock_send, context, app):
1815 1815
    page = Page.objects.create(title='xxx', template_name='standard')
1816 1816
    cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
1817 1817
    cell.carddef_reference = 'default:card_model_1'
......
1889 1889
    result = cell.render(context)
1890 1890
    assert '<h2>' not in result
1891 1891

  
1892
    # test available context
1893
    cell.title_type = 'manual'
1894
    cell.custom_title = 'X{{ site_base }}Y'
1895
    cell.card_ids = '11'
1896
    cell.save()
1897
    resp = app.get(page.get_online_url())
1898
    assert len(resp.context['cells']) == 1
1899
    extra_ctx = re.findall(r'data-extra-context="(.*)"', resp.text)
1900
    cell_url = reverse(
1901
        'combo-public-ajax-page-cell',
1902
        kwargs={'page_pk': page.pk, 'cell_reference': cell.get_reference()},
1903
    )
1904
    cell_resp = app.get(cell_url + '?ctx=' + extra_ctx[0])
1905
    assert '<h2>Xhttp://testserverY</h2>' in cell_resp
1906

  
1892 1907

  
1893 1908
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
1894 1909
def test_card_cell_render_text_field(mock_send, context):
......
1947 1962

  
1948 1963

  
1949 1964
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
1950
def test_card_cell_render_custom_schema(mock_send, context):
1965
def test_card_cell_render_custom_schema(mock_send, context, app):
1951 1966
    page = Page.objects.create(title='xxx', template_name='standard')
1952 1967
    cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
1953 1968
    cell.carddef_reference = 'default:card_model_1'
......
2002 2017
    assert PyQuery(result).find('p.label').text() == 'Foo bar baz'
2003 2018
    assert PyQuery(result).find('div.value').text() == 'Foo,Bar'
2004 2019

  
2020
    # test available context
2021
    cell.card_ids = '11'
2022
    cell.custom_schema = {
2023
        'cells': [
2024
            {'varname': '@custom@', 'template': 'Foo bar baz X{{ site_base }}Y', 'display_mode': 'label'},
2025
        ]
2026
    }
2027
    cell.save()
2028
    resp = app.get(page.get_online_url())
2029
    assert len(resp.context['cells']) == 1
2030
    extra_ctx = re.findall(r'data-extra-context="(.*)"', resp.text)
2031
    cell_url = reverse(
2032
        'combo-public-ajax-page-cell',
2033
        kwargs={'page_pk': page.pk, 'cell_reference': cell.get_reference()},
2034
    )
2035
    cell_resp = app.get(cell_url + '?ctx=' + extra_ctx[0])
2036
    assert '<p class="label">Foo bar baz Xhttp://testserverY</p>' in cell_resp
2037

  
2005 2038

  
2006 2039
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
2007 2040
def test_card_cell_render_identifier(mock_send, nocache, app):
2008
-