misc: add support for live block conditions in workflow forms (#86798)
gitea/wcs/pipeline/head This commit looks good
Details
gitea/wcs/pipeline/head This commit looks good
Details
This commit is contained in:
parent
f969f302af
commit
925249aa04
|
@ -916,11 +916,13 @@ class FormStatusPage(Directory, FormTemplateMixin):
|
|||
yield (widget.field, block_row, field_widget.field, field_widget)
|
||||
block_row += 1
|
||||
|
||||
# get dictionary with blocks data, from workflow form, or defaults to formdata
|
||||
blocks_formdata_data = getattr(form, 'blocks_formdata_data', formdata.data)
|
||||
for block, block_row, field, widget in get_all_field_widgets(form):
|
||||
t0 = time.time()
|
||||
if block:
|
||||
try:
|
||||
block_data = formdata.data.get(block.id)['data'][block_row]
|
||||
block_data = blocks_formdata_data.get(block.id)['data'][block_row]
|
||||
except (IndexError, TypeError):
|
||||
block_data = {}
|
||||
|
||||
|
|
|
@ -326,6 +326,16 @@ class FormWorkflowStatusItem(WorkflowStatusItem):
|
|||
|
||||
self.formdef.set_live_condition_sources(form, self.formdef.fields)
|
||||
|
||||
if (
|
||||
formdata.evolution
|
||||
and formdata.evolution[-1].parts
|
||||
and isinstance(formdata.evolution[-1].parts[-1], WorkflowFormEvolutionPart)
|
||||
and formdata.evolution[-1].parts[-1].live
|
||||
):
|
||||
# attach live evaluated data to form object, to be used in live_process_fields
|
||||
# for block conditions.
|
||||
form.blocks_formdata_data = formdata.evolution[-1].parts[-1].data
|
||||
|
||||
if form.is_submitted():
|
||||
# skip prefilling part when form is being submitted
|
||||
return
|
||||
|
@ -355,6 +365,7 @@ class FormWorkflowStatusItem(WorkflowStatusItem):
|
|||
formdata.evolution[-1].add_part(
|
||||
WorkflowFormEvolutionPart(self, formdef_data, live=bool(not submit))
|
||||
)
|
||||
form.formdata_data = formdef_data
|
||||
|
||||
def submit_form(self, form, formdata, user, evo):
|
||||
if not self.formdef:
|
||||
|
|
Loading…
Reference in New Issue