wcs: fix use of custom view in card cell with related (#67260)
This commit is contained in:
parent
907a3d7408
commit
5486f4c068
|
@ -1024,12 +1024,12 @@ class WcsCardInfosCell(CardMixin, CellBase):
|
||||||
def get_repeat_template(self, context):
|
def get_repeat_template(self, context):
|
||||||
return len(context.get(self.global_context_key) or [])
|
return len(context.get(self.global_context_key) or [])
|
||||||
|
|
||||||
def get_card_data(self, card_slug, card_id, context, synchronous=False):
|
def get_card_data(self, card_slug, card_custom_view, card_id, context, synchronous=False):
|
||||||
api_url = '/api/cards/%s/%s/?include-files-content=off' % (card_slug, card_id)
|
api_url = '/api/cards/%s/%s/?include-files-content=off' % (card_slug, card_id)
|
||||||
if self.card_custom_view:
|
if card_custom_view:
|
||||||
api_url = '/api/cards/%s/%s/%s/?include-files-content=off' % (
|
api_url = '/api/cards/%s/%s/%s/?include-files-content=off' % (
|
||||||
card_slug,
|
card_slug,
|
||||||
self.card_custom_view,
|
card_custom_view,
|
||||||
card_id,
|
card_id,
|
||||||
)
|
)
|
||||||
user = self.get_concerned_user(context)
|
user = self.get_concerned_user(context)
|
||||||
|
@ -1211,7 +1211,7 @@ class WcsCardInfosCell(CardMixin, CellBase):
|
||||||
return []
|
return []
|
||||||
# and data
|
# and data
|
||||||
next_card_data = self.get_card_data(
|
next_card_data = self.get_card_data(
|
||||||
card_slug, card_data['fields']['%s_raw' % varname], context, synchronous=True
|
card_slug, None, card_data['fields']['%s_raw' % varname], context, synchronous=True
|
||||||
)
|
)
|
||||||
if not next_card_data:
|
if not next_card_data:
|
||||||
# card data not found
|
# card data not found
|
||||||
|
@ -1240,7 +1240,9 @@ class WcsCardInfosCell(CardMixin, CellBase):
|
||||||
if not card_id:
|
if not card_id:
|
||||||
# no card id found
|
# no card id found
|
||||||
return []
|
return []
|
||||||
card_data = self.get_card_data(first_cell.card_slug, card_id, context, synchronous=True)
|
card_data = self.get_card_data(
|
||||||
|
first_cell.card_slug, first_cell.card_custom_view, card_id, context, synchronous=True
|
||||||
|
)
|
||||||
if not card_data:
|
if not card_data:
|
||||||
# card data not found
|
# card data not found
|
||||||
return []
|
return []
|
||||||
|
@ -1318,7 +1320,7 @@ class WcsCardInfosCell(CardMixin, CellBase):
|
||||||
extra_context['card_not_found'] = True
|
extra_context['card_not_found'] = True
|
||||||
return extra_context
|
return extra_context
|
||||||
|
|
||||||
card_data = self.get_card_data(self.card_slug, card_id, context)
|
card_data = self.get_card_data(self.card_slug, self.card_custom_view, card_id, context)
|
||||||
if not card_data:
|
if not card_data:
|
||||||
return extra_context
|
return extra_context
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ WCS_CARDDEFS_DATA = [
|
||||||
{'title': 'Card Model 2', 'slug': 'card_model_2'},
|
{'title': 'Card Model 2', 'slug': 'card_model_2'},
|
||||||
{'title': 'Card Model 3', 'slug': 'card_model_3'},
|
{'title': 'Card Model 3', 'slug': 'card_model_3'},
|
||||||
{'title': 'Card A', 'slug': 'card_a'},
|
{'title': 'Card A', 'slug': 'card_a'},
|
||||||
{'title': 'Card B', 'slug': 'card_b'},
|
{'title': 'Card B', 'slug': 'card_b', 'custom_views': [{'id': 'a-custom-view', 'text': 'foo bar'}]},
|
||||||
{'title': 'Card C', 'slug': 'card_c'},
|
{'title': 'Card C', 'slug': 'card_c'},
|
||||||
{'title': 'Card D', 'slug': 'card_d'},
|
{'title': 'Card D', 'slug': 'card_d'},
|
||||||
{'title': 'Card E', 'slug': 'card_e'},
|
{'title': 'Card E', 'slug': 'card_e'},
|
||||||
|
@ -1695,6 +1695,7 @@ def test_cards_cell_setup(mock_send):
|
||||||
('default:card_model_3', 'test : Card Model 3'),
|
('default:card_model_3', 'test : Card Model 3'),
|
||||||
('default:card_a', 'test : Card A'),
|
('default:card_a', 'test : Card A'),
|
||||||
('default:card_b', 'test : Card B'),
|
('default:card_b', 'test : Card B'),
|
||||||
|
('default:card_b:a-custom-view', 'test : Card B - foo bar'),
|
||||||
('default:card_c', 'test : Card C'),
|
('default:card_c', 'test : Card C'),
|
||||||
('default:card_d', 'test : Card D'),
|
('default:card_d', 'test : Card D'),
|
||||||
('default:card_e', 'test : Card E'),
|
('default:card_e', 'test : Card E'),
|
||||||
|
@ -1704,6 +1705,7 @@ def test_cards_cell_setup(mock_send):
|
||||||
('other:card_model_3', 'test2 : Card Model 3'),
|
('other:card_model_3', 'test2 : Card Model 3'),
|
||||||
('other:card_a', 'test2 : Card A'),
|
('other:card_a', 'test2 : Card A'),
|
||||||
('other:card_b', 'test2 : Card B'),
|
('other:card_b', 'test2 : Card B'),
|
||||||
|
('other:card_b:a-custom-view', 'test2 : Card B - foo bar'),
|
||||||
('other:card_c', 'test2 : Card C'),
|
('other:card_c', 'test2 : Card C'),
|
||||||
('other:card_d', 'test2 : Card D'),
|
('other:card_d', 'test2 : Card D'),
|
||||||
('other:card_e', 'test2 : Card E'),
|
('other:card_e', 'test2 : Card E'),
|
||||||
|
@ -1998,6 +2000,7 @@ def test_card_cell_setup(mock_send, app, admin_user):
|
||||||
('default:card_model_3', 'test : Card Model 3'),
|
('default:card_model_3', 'test : Card Model 3'),
|
||||||
('default:card_a', 'test : Card A'),
|
('default:card_a', 'test : Card A'),
|
||||||
('default:card_b', 'test : Card B'),
|
('default:card_b', 'test : Card B'),
|
||||||
|
('default:card_b:a-custom-view', 'test : Card B - foo bar'),
|
||||||
('default:card_c', 'test : Card C'),
|
('default:card_c', 'test : Card C'),
|
||||||
('default:card_d', 'test : Card D'),
|
('default:card_d', 'test : Card D'),
|
||||||
('default:card_e', 'test : Card E'),
|
('default:card_e', 'test : Card E'),
|
||||||
|
@ -2007,6 +2010,7 @@ def test_card_cell_setup(mock_send, app, admin_user):
|
||||||
('other:card_model_3', 'test2 : Card Model 3'),
|
('other:card_model_3', 'test2 : Card Model 3'),
|
||||||
('other:card_a', 'test2 : Card A'),
|
('other:card_a', 'test2 : Card A'),
|
||||||
('other:card_b', 'test2 : Card B'),
|
('other:card_b', 'test2 : Card B'),
|
||||||
|
('other:card_b:a-custom-view', 'test2 : Card B - foo bar'),
|
||||||
('other:card_c', 'test2 : Card C'),
|
('other:card_c', 'test2 : Card C'),
|
||||||
('other:card_d', 'test2 : Card D'),
|
('other:card_d', 'test2 : Card D'),
|
||||||
('other:card_e', 'test2 : Card E'),
|
('other:card_e', 'test2 : Card E'),
|
||||||
|
@ -3477,10 +3481,30 @@ def test_card_cell_render_identifier_from_related(mock_send, nocache, app):
|
||||||
for j, url in enumerate(urls):
|
for j, url in enumerate(urls):
|
||||||
assert url in mock_send.call_args_list[j][0][0].url
|
assert url in mock_send.call_args_list[j][0][0].url
|
||||||
|
|
||||||
|
# reset
|
||||||
cell.order = 0 # reset
|
cell.order = 0 # reset
|
||||||
cell.save()
|
cell.save()
|
||||||
|
cell2.slug = 'slugb'
|
||||||
|
cell2.save()
|
||||||
|
|
||||||
|
# test with custom_view
|
||||||
|
cell2.carddef_reference = 'default:card_b:a-custom-view'
|
||||||
|
cell2.save()
|
||||||
|
single(
|
||||||
|
urls=[
|
||||||
|
# get first cell data
|
||||||
|
'/api/cards/card_a/1/',
|
||||||
|
# get card_c schema
|
||||||
|
'/api/cards/card_c/@schema',
|
||||||
|
# follow cardc relation
|
||||||
|
'/api/cards/card_c/6/',
|
||||||
|
# and follow cardb relation
|
||||||
|
'/api/cards/card_b/a-custom-view/7/',
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
# direct and multiple relation (items)
|
# direct and multiple relation (items)
|
||||||
cell2.slug = 'slugb' # reset
|
cell2.carddef_reference = 'default:card_b' # reset
|
||||||
cell2.related_card_path = 'sluga/cardsb'
|
cell2.related_card_path = 'sluga/cardsb'
|
||||||
cell2.save()
|
cell2.save()
|
||||||
multiple(
|
multiple(
|
||||||
|
|
Loading…
Reference in New Issue