sql: do not fail indexing on missing block (#54384)
This commit is contained in:
parent
08bb5f7387
commit
d8b7b5342b
|
@ -419,6 +419,23 @@ def test_sql_get_ids_from_query():
|
|||
assert set(ids) == set([id4])
|
||||
|
||||
|
||||
def test_sql_fts_index_with_missing_block():
|
||||
data_class = formdef.data_class(mode='sql')
|
||||
data_class.wipe()
|
||||
|
||||
formdata = data_class()
|
||||
formdata.data = {
|
||||
'7': {
|
||||
'data': [
|
||||
{'1': 'some other example having foo', '2': 'boat', '2_display': 'Yatch'},
|
||||
{'1': 'bar', '2': 'plane', '2_display': 'Cessna'},
|
||||
]
|
||||
}
|
||||
}
|
||||
BlockDef.wipe()
|
||||
formdata.store()
|
||||
|
||||
|
||||
def test_sql_rollback_on_error():
|
||||
data_class = formdef.data_class(mode='sql')
|
||||
data_class.wipe()
|
||||
|
|
|
@ -2103,8 +2103,12 @@ class SqlDataMixin(SqlMixin):
|
|||
for field in self._formdef.get_all_fields():
|
||||
if field.key == 'block' and self.data.get(field.id):
|
||||
for data in self.data[field.id].get('data'):
|
||||
for subfield in field.block.fields:
|
||||
yield subfield, data
|
||||
try:
|
||||
for subfield in field.block.fields:
|
||||
yield subfield, data
|
||||
except KeyError:
|
||||
# block doesn't exist anymore
|
||||
break
|
||||
else:
|
||||
data = self.data
|
||||
yield field, self.data
|
||||
|
|
Loading…
Reference in New Issue