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.name = 'foo2'
formdef.fields = [ formdef.fields = [
BlockField(id='1', label='Test', block_slug=blockdef.slug), BlockField(id='1', label='Test', block_slug=blockdef.slug),
BlockField(id='2', label='Test2', block_slug=blockdef.slug), # left empty
] ]
formdef.store() formdef.store()

View File

@ -203,13 +203,14 @@ class UpdateRelationsAfterJob(AfterJob):
objdata_changed = False objdata_changed = False
for field in fields: for field in fields:
if getattr(field, 'block_field', None): if getattr(field, 'block_field', None):
blockdata_changed = False if objdata.data.get(field.block_field.id):
for block_row_data in objdata.data[field.block_field.id]['data']: blockdata_changed = False
blockdata_changed |= update_data(field, block_row_data) for block_row_data in objdata.data[field.block_field.id]['data']:
if blockdata_changed: blockdata_changed |= update_data(field, block_row_data)
# if block data changed, maybe block digest changed too if blockdata_changed:
update_data(field.block_field, objdata.data) # if block data changed, maybe block digest changed too
objdata_changed |= blockdata_changed update_data(field.block_field, objdata.data)
objdata_changed |= blockdata_changed
else: else:
objdata_changed |= update_data(field, objdata.data) objdata_changed |= update_data(field, objdata.data)
if objdata_changed: if objdata_changed: