From 1a4fdc71cfb6e490c1d93d0035da1239f1e3b728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 15 Mar 2024 12:49:20 +0100 Subject: [PATCH] carddata: skip empty blocks when updating related items (#88224) --- tests/test_carddef.py | 1 + wcs/carddata.py | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/test_carddef.py b/tests/test_carddef.py index d12bcb287..ae37e2ae3 100644 --- a/tests/test_carddef.py +++ b/tests/test_carddef.py @@ -1416,6 +1416,7 @@ def test_card_update_related(pub): formdef.name = 'foo2' formdef.fields = [ BlockField(id='1', label='Test', block_slug=blockdef.slug), + BlockField(id='2', label='Test2', block_slug=blockdef.slug), # left empty ] formdef.store() diff --git a/wcs/carddata.py b/wcs/carddata.py index f12d944d9..03faa1aa4 100644 --- a/wcs/carddata.py +++ b/wcs/carddata.py @@ -203,13 +203,14 @@ class UpdateRelationsAfterJob(AfterJob): objdata_changed = False for field in fields: if getattr(field, 'block_field', None): - blockdata_changed = False - for block_row_data in objdata.data[field.block_field.id]['data']: - blockdata_changed |= update_data(field, block_row_data) - if blockdata_changed: - # if block data changed, maybe block digest changed too - update_data(field.block_field, objdata.data) - objdata_changed |= blockdata_changed + if objdata.data.get(field.block_field.id): + blockdata_changed = False + for block_row_data in objdata.data[field.block_field.id]['data']: + blockdata_changed |= update_data(field, block_row_data) + if blockdata_changed: + # if block data changed, maybe block digest changed too + update_data(field.block_field, objdata.data) + objdata_changed |= blockdata_changed else: objdata_changed |= update_data(field, objdata.data) if objdata_changed: