formdata: do not fail store on missing block (#73774) #56
|
@ -456,6 +456,32 @@ def test_sql_fts_index_with_missing_block(formdef):
|
||||||
formdata.store()
|
formdata.store()
|
||||||
|
|
||||||
|
|
||||||
|
def test_sql_fts_index_with_missing_block_and_user_fields_config(pub, formdef):
|
||||||
|
from wcs.admin.settings import UserFieldsFormDef
|
||||||
|
|
||||||
|
user_formdef = UserFieldsFormDef(pub)
|
||||||
|
user_formdef.fields.append(fields.StringField(id='3', label='first_name', type='string'))
|
||||||
|
user_formdef.fields.append(fields.StringField(id='4', label='last_name', type='string'))
|
||||||
|
user_formdef.store()
|
||||||
|
pub.cfg['users']['field_name'] = ['3', '4']
|
||||||
|
pub.write_cfg()
|
||||||
|
|
||||||
|
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(formdef):
|
def test_sql_rollback_on_error(formdef):
|
||||||
data_class = formdef.data_class(mode='sql')
|
data_class = formdef.data_class(mode='sql')
|
||||||
data_class.wipe()
|
data_class.wipe()
|
||||||
|
|
|
@ -525,9 +525,13 @@ class FormData(StorableObject):
|
||||||
for field in self.formdef.fields:
|
for field in self.formdef.fields:
|
||||||
yield field
|
yield field
|
||||||
if field.key == 'block':
|
if field.key == 'block':
|
||||||
for subfield in field.block.fields:
|
try:
|
||||||
subfield.block = field
|
for subfield in field.block.fields:
|
||||||
yield subfield
|
subfield.block = field
|
||||||
|
yield subfield
|
||||||
|
except KeyError:
|
||||||
|
# block doesn't exist anymore
|
||||||
|
pass
|
||||||
|
|
||||||
users_cfg = get_cfg('users', {})
|
users_cfg = get_cfg('users', {})
|
||||||
if not self.user_id and users_cfg and users_cfg.get('field_name'):
|
if not self.user_id and users_cfg and users_cfg.get('field_name'):
|
||||||
|
|
Loading…
Reference in New Issue