blocks: adapt new row detection to block prefill changes (#46111)

This commit is contained in:
Frédéric Péters 2021-02-16 14:06:26 +01:00
parent 3be0032b4f
commit d40a163a25
2 changed files with 9 additions and 2 deletions

View File

@ -349,4 +349,6 @@ class BlockWidget(WidgetList):
def had_add_clicked(self):
add_widget = self.get_widget('add_element')
return get_request().form.get(add_widget.name) if add_widget else False
request = get_request()
request_form = getattr(request, 'orig_form', request.form)
return request_form.get(add_widget.name) if add_widget else False

View File

@ -519,7 +519,7 @@ class FormPage(Directory, FormTemplateMixin):
had_prefill = False
if page_change or submit_button is True:
# on page change (or when a "add row" button is clicked), we
# fake a GET request so the form is not altered# with errors
# fake a GET request so the form is not altered with errors
# from the previous submit; if the page was already
# visited, we restore values; otherwise we set req.form as empty.
req = get_request()
@ -529,6 +529,11 @@ class FormPage(Directory, FormTemplateMixin):
data, form, displayed_fields, add_button_clicked=bool(submit_button is True)
)
if submit_button is True:
# keep submitted data so it's possible to known the add button
# was clicked later on.
req.orig_form = req.form
if had_prefill:
# include prefilled data
transient_formdata = self.get_transient_formdata()