0001-wcs-empty-card-cell-if-card_id-result-is-empty-58413.patch
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 |
- |