carddata: skip empty blocks when updating related items (#88224)
gitea/wcs/pipeline/head This commit looks good Details

This commit is contained in:
Frédéric Péters 2024-03-15 12:49:20 +01:00
parent d2b95ce0d0
commit 1a4fdc71cf
2 changed files with 9 additions and 7 deletions

View File

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

View File

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