Projet

Général

Profil

0001-wcs-empty-card-cell-if-card_id-result-is-empty-58413.patch

Lauréline Guérin, 05 novembre 2021 15:50

Télécharger (4,31 ko)

Voir les différences:

Subject: [PATCH] wcs: empty card cell if card_id result is empty (#58413)

 combo/apps/wcs/models.py                     |  7 +++---
 combo/apps/wcs/templates/combo/wcs/card.html |  4 ++-
 tests/test_wcs.py                            | 26 +++++++++++++++++---
 3 files changed, 28 insertions(+), 9 deletions(-)
combo/apps/wcs/models.py
963 963
    def get_card_id(self, context):
964 964
        if self.card_id:
965 965
            try:
966
                card_id = Template('{%% load wcs %%}%s' % self.card_id).render(Context(context))
966
                return Template('{%% load wcs %%}%s' % self.card_id).render(Context(context))
967 967
            except (VariableDoesNotExist, TemplateSyntaxError):
968 968
                return None
969
            else:
970
                if card_id:
971
                    return card_id
972 969

  
973 970
        card_slug = self.carddef_reference.split(':')[1]
974 971
        card_id = '%s_id' % card_slug
......
994 991

  
995 992
        card_id = self.get_card_id(context)
996 993
        if not card_id:
994
            if self.card_id:  # template defined, but result is empty or None
995
                extra_context['card_not_found'] = True
997 996
            return extra_context
998 997
        card_slug = self.carddef_reference.split(':')[1]
999 998
        api_url = '/api/cards/%s/%s/' % (card_slug, card_id)
combo/apps/wcs/templates/combo/wcs/card.html
1 1
{% load assets i18n %}
2 2

  
3 3
{% block cell-content %}
4
{% if not card_not_found %}
4 5

  
5 6
{% block cell-header %}
6 7
{% if title %}<h2>{{ title }}</h2>{% endif %}
7 8
{% include "combo/asset_picture_fragment.html" %}
8 9
{% endblock %}
9 10

  
10
{% if card %}
11
{% if card.id %}
11 12
<div class="cell--body">
12 13
{% spaceless %}
13 14
{% if cell.custom_schema %}
......
54 55
</div>
55 56
{% endif %}
56 57

  
58
{% endif %}
57 59
{% endblock %}
tests/test_wcs.py
1913 1913

  
1914 1914
    # check url called
1915 1915
    mock_send.reset_mock()
1916
    cell.render(context)
1916
    result = cell.render(context)
1917 1917
    assert '/api/cards/card_model_1/11/' in mock_send.call_args_list[0][0][0].url
1918
    assert 'Card Model 1' in result
1919
    assert '<p>Unknown Card</p>' not in result
1918 1920

  
1919 1921
    # with identifier
1920 1922
    cell.card_id = '42'
1921 1923
    cell.save()
1922 1924
    mock_send.reset_mock()
1923
    cell.render(context)
1925
    result = cell.render(context)
1924 1926
    assert '/api/cards/card_model_1/42/' in mock_send.call_args_list[0][0][0].url
1927
    assert 'Card Model 1' in result
1928
    assert '<p>Unknown Card</p>' in result
1925 1929

  
1926 1930
    context['cards'] = Cards()
1927 1931
    cell.card_id = '{% cards|objects:"card_model_1"|last|get:"id" %}'  # syntax error
1928 1932
    cell.save()
1929 1933
    mock_send.reset_mock()
1930
    cell.render(context)
1934
    result = cell.render(context)
1931 1935
    assert mock_send.call_args_list == []
1936
    assert result.replace('\n', '') == ''  # empty-cell
1932 1937

  
1938
    del context['card_not_found']
1933 1939
    cell.card_id = '{{ cards|objects:"card_model_1"|last|get:"id" }}'
1934 1940
    cell.save()
1935 1941
    mock_send.reset_mock()
1936
    cell.render(context)
1942
    result = cell.render(context)
1937 1943
    assert '/api/cards/card_model_1/list' in mock_send.call_args_list[0][0][0].url
1938 1944
    assert '/api/cards/card_model_1/13/' in mock_send.call_args_list[1][0][0].url
1945
    assert 'Card Model 1' in result
1946
    assert '<p>Unknown Card</p>' in result
1947

  
1948
    # with a card_id template, but result is empty
1949
    del context['card_model_1_id']
1950
    cell.card_id = '{{ foo }}'
1951
    cell.save()
1952
    assert cell.get_card_id(context) == ''
1953
    mock_send.reset_mock()
1954
    result = cell.render(context)
1955
    assert mock_send.call_args_list == []
1956
    assert result.replace('\n', '') == ''  # empty-cell
1939 1957

  
1940 1958

  
1941 1959
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
1942
-