formdata: handle form_tracking_code of unsaved data in lazy mode (#30536)
This commit is contained in:
parent
9520fa5d02
commit
4c25688057
|
@ -715,6 +715,24 @@ def test_lazy_formdata(pub, variable_test_data):
|
|||
assert lazy_formdata.var.filefield.raw.base_filename == 'test.txt'
|
||||
assert lazy_formdata.var.filefield.raw.content_type == 'text/plain'
|
||||
|
||||
formdata = FormDef.select()[0].data_class()
|
||||
lazy_formdata = LazyFormData(formdata)
|
||||
assert lazy_formdata.tracking_code is None
|
||||
formdata.data = {'future_tracking_code': 'CDCBGWQX'}
|
||||
assert lazy_formdata.tracking_code == 'CDCBGWQX'
|
||||
|
||||
formdata = FormDef.select()[0].data_class().select()[0]
|
||||
lazy_formdata = LazyFormData(formdata)
|
||||
assert lazy_formdata.tracking_code is None
|
||||
|
||||
tracking_code = pub.tracking_code_class()
|
||||
tracking_code.formdata = formdata
|
||||
tracking_code.store()
|
||||
formdata = FormDef.select()[0].data_class().get(formdata.id)
|
||||
lazy_formdata = LazyFormData(formdata)
|
||||
assert lazy_formdata.tracking_code == tracking_code.id
|
||||
|
||||
|
||||
def test_lazy_variables(pub, variable_test_data):
|
||||
formdata = FormDef.select()[0].data_class().select()[0]
|
||||
for mode in (None, 'lazy'):
|
||||
|
|
|
@ -684,8 +684,12 @@ class FormData(StorableObject):
|
|||
|
||||
if self.tracking_code:
|
||||
d['form_tracking_code'] = self.tracking_code
|
||||
elif not self.status and self.data and 'future_tracking_code' in self.data:
|
||||
d['form_tracking_code'] = self.data['future_tracking_code']
|
||||
elif not self.status and self.data:
|
||||
if 'future_tracking_code' in self.data:
|
||||
d['form_tracking_code'] = self.data['future_tracking_code']
|
||||
elif 'draft_formdata_id' in self.data:
|
||||
formdata = self.formdef.data_class().get(self.data['draft_formdata_id'])
|
||||
d['form_tracking_code'] = formdata.tracking_code
|
||||
|
||||
d['form_submission_backoffice'] = self.backoffice_submission
|
||||
d['form_submission_channel'] = self.submission_channel
|
||||
|
|
|
@ -144,7 +144,13 @@ class LazyFormData(LazyFormDef):
|
|||
|
||||
@property
|
||||
def tracking_code(self):
|
||||
return self.formdata.tracking_code
|
||||
formdata = self.formdata
|
||||
if not formdata.status and formdata.data:
|
||||
if 'future_tracking_code' in formdata.data:
|
||||
return formdata.data['future_tracking_code']
|
||||
elif 'draft_formdata_id' in formdata.data:
|
||||
formdata = formdata.formdef.data_class().get(formdata.data['draft_formdata_id'])
|
||||
return formdata.tracking_code
|
||||
|
||||
@property
|
||||
def submission_backoffice(self):
|
||||
|
|
Loading…
Reference in New Issue