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()
|
||||
|
||||
|
||||
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):
|
||||
data_class = formdef.data_class(mode='sql')
|
||||
data_class.wipe()
|
||||
|
|
|
@ -525,9 +525,13 @@ class FormData(StorableObject):
|
|||
for field in self.formdef.fields:
|
||||
yield field
|
||||
if field.key == 'block':
|
||||
for subfield in field.block.fields:
|
||||
subfield.block = field
|
||||
yield subfield
|
||||
try:
|
||||
for subfield in field.block.fields:
|
||||
subfield.block = field
|
||||
yield subfield
|
||||
except KeyError:
|
||||
# block doesn't exist anymore
|
||||
pass
|
||||
|
||||
users_cfg = get_cfg('users', {})
|
||||
if not self.user_id and users_cfg and users_cfg.get('field_name'):
|
||||
|
|
Loading…
Reference in New Issue