applications: cell condition dependencies to card models (#86520)
This commit is contained in:
parent
7e43932262
commit
8f6ab11272
|
@ -141,6 +141,8 @@ def get_card_dependency(carddef_slug, carddef_title, wcs_url):
|
|||
def get_wcs_dependencies_from_template(string):
|
||||
if not is_wcs_enabled(None):
|
||||
return []
|
||||
if not string:
|
||||
return []
|
||||
service_key = get_default_wcs_service_key()
|
||||
wcs = get_wcs_services().get(service_key)
|
||||
wcs_url = wcs.get('url') or ''
|
||||
|
|
|
@ -1272,6 +1272,7 @@ class CellBase(models.Model, metaclass=CellMeta):
|
|||
|
||||
def get_dependencies(self):
|
||||
yield from self.groups.all()
|
||||
yield from get_wcs_dependencies_from_template(self.condition)
|
||||
|
||||
def get_manager_tabs(self):
|
||||
from combo.manager.forms import CellVisibilityForm
|
||||
|
|
|
@ -593,6 +593,32 @@ def test_page_dependencies_card_models(mock_send):
|
|||
assert card_dep in page.get_dependencies()
|
||||
|
||||
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_page_dependencies_cell_card_models(mock_send):
|
||||
page = Page.objects.create(title='Test', slug='test', template_name='standard')
|
||||
cell = TextCell.objects.create(
|
||||
page=page,
|
||||
placeholder='content',
|
||||
text='Foobar',
|
||||
order=0,
|
||||
condition='cards|objects:"card_model_1"|getlist:"id"|list',
|
||||
)
|
||||
card_dep = {
|
||||
'type': 'cards',
|
||||
'id': 'card_model_1',
|
||||
'text': 'Card Model 1',
|
||||
'urls': {
|
||||
'export': 'http://127.0.0.1:8999/api/export-import/cards/card_model_1/',
|
||||
'dependencies': 'http://127.0.0.1:8999/api/export-import/cards/card_model_1/dependencies/',
|
||||
'redirect': 'http://127.0.0.1:8999/api/export-import/cards/card_model_1/redirect/',
|
||||
},
|
||||
}
|
||||
assert card_dep in page.get_dependencies()
|
||||
|
||||
cell.mark_as_invalid(reason_code='foobar')
|
||||
assert card_dep not in page.get_dependencies()
|
||||
|
||||
|
||||
def test_page_dependencies_link_cell():
|
||||
page1 = Page.objects.create(title='Test', slug='test', template_name='standard')
|
||||
page2 = Page.objects.create(title='Other page', slug='other', template_name='standard')
|
||||
|
|
Loading…
Reference in New Issue