wcs: refresh cached fields for form links in list of links (#81157) #163

Merged
lguerin merged 1 commits from wip/81157-import-refresh-cached-fields into main 2023-09-19 17:36:26 +02:00
2 changed files with 14 additions and 5 deletions

View File

@ -1996,6 +1996,9 @@ class LinkListCell(CellBase):
del link['pk']
del link['fields']['placeholder']
del link['fields']['page']
for key in list(link['fields'].keys()):
if key.startswith('cached_'):
del link['fields'][key]
return {'links': links}
def import_subobjects(self, cell_json):
@ -2005,6 +2008,8 @@ class LinkListCell(CellBase):
links = serializers.deserialize('json', json.dumps(cell_json['links']), ignorenonexistent=True)
for link in links:
link.save()
# will populate cached_* attributes
link.object.save()
def duplicate_m2m(self, new_cell):
# duplicate also link items

View File

@ -1802,6 +1802,7 @@ def test_manager_link_list_cell_duplicate():
item = WcsFormCell.objects.create(
page=page,
placeholder=cell.link_placeholder,
formdef_reference='default:form-title',
cached_title='A title',
cached_url='http://example.com',
cached_json={'foo': 'bar'},
@ -1919,14 +1920,16 @@ def test_manager_link_list_tabs(app, admin_user):
assert resp.pyquery('#tab-%s-general.pk-tabs--button-marker' % cell.get_reference())
def test_import_export_pages_with_links():
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
def test_import_export_pages_with_links(mock_send):
page = Page(title='bar', slug='bar', order=1)
page.save()
cell = LinkListCell.objects.create(order=0, placeholder='content', page=page)
item = WcsFormCell.objects.create(
WcsFormCell.objects.create(
page=page,
placeholder=cell.link_placeholder,
formdef_reference='default:form-title',
cached_title='A title',
cached_url='http://example.com',
cached_json={'foo': 'bar'},
@ -1934,6 +1937,7 @@ def test_import_export_pages_with_links():
)
site_export = [x.get_serialized_page() for x in Page.objects.all()]
assert 'cached_' not in json.dumps(site_export)
Page.load_serialized_pages(site_export)
@ -1942,9 +1946,9 @@ def test_import_export_pages_with_links():
assert len(new_cells[0].get_items()) == 1
new_item = new_cells[0].get_items()[0]
assert isinstance(new_item, WcsFormCell)
assert new_item.cached_title == item.cached_title
assert new_item.cached_url == item.cached_url
assert new_item.cached_json == item.cached_json
assert new_item.cached_title == 'too long form title' + 'e' * 231
assert new_item.cached_url == 'http://127.0.0.1:8999/form-title/'
assert new_item.cached_json != {}
def test_list_of_links_with_form_render(app):