applications: cell condition dependencies to card models (#86520)

This commit is contained in:
Lauréline Guérin 2024-02-05 15:37:08 +01:00
parent 7e43932262
commit 8f6ab11272
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 29 additions and 0 deletions

View File

@ -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 ''

View File

@ -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

View File

@ -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')