0001-sql-do-not-fail-indexing-on-missing-block-54384.patch
tests/test_sql.py | ||
---|---|---|
419 | 419 |
assert set(ids) == set([id4]) |
420 | 420 | |
421 | 421 | |
422 |
def test_sql_fts_index_with_missing_block(): |
|
423 |
data_class = formdef.data_class(mode='sql') |
|
424 |
data_class.wipe() |
|
425 | ||
426 |
formdata = data_class() |
|
427 |
formdata.data = { |
|
428 |
'7': { |
|
429 |
'data': [ |
|
430 |
{'1': 'some other example having foo', '2': 'boat', '2_display': 'Yatch'}, |
|
431 |
{'1': 'bar', '2': 'plane', '2_display': 'Cessna'}, |
|
432 |
] |
|
433 |
} |
|
434 |
} |
|
435 |
BlockDef.wipe() |
|
436 |
formdata.store() |
|
437 | ||
438 | ||
422 | 439 |
def test_sql_rollback_on_error(): |
423 | 440 |
data_class = formdef.data_class(mode='sql') |
424 | 441 |
data_class.wipe() |
wcs/sql.py | ||
---|---|---|
2103 | 2103 |
for field in self._formdef.get_all_fields(): |
2104 | 2104 |
if field.key == 'block' and self.data.get(field.id): |
2105 | 2105 |
for data in self.data[field.id].get('data'): |
2106 |
for subfield in field.block.fields: |
|
2107 |
yield subfield, data |
|
2106 |
try: |
|
2107 |
for subfield in field.block.fields: |
|
2108 |
yield subfield, data |
|
2109 |
except KeyError: |
|
2110 |
# block doesn't exist anymore |
|
2111 |
break |
|
2108 | 2112 |
else: |
2109 | 2113 |
data = self.data |
2110 | 2114 |
yield field, self.data |
2111 |
- |