[FIX] website: prevent sending the value of a file field if it is hidden

When a field in a form has a conditional visibility, its potential value
is not sent once the form is submitted if the conditional visibility is
not met. Before this commit, that was not the case for file fields.

Steps to reproduce the bug fixed by this commit:
 - Drop a form or go to /contactus
 - Add a file field
 - Put a visibility condition on this field and save
 - Fill the form, respect the visibility condition you have introduced,
   add a file in the previously added field.
 - Before submitting the form, make sure the visibility condition is no
   longer met and then submit the form.

Your file is part of the submitted data by mistake. As it was hidden at
the time you submitted the form, it should not have been sent.

opw-2856054

closes odoo/odoo#93783

X-original-commit: 159106bf873b866b9ce93e48a45f7d1d9346aa45
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
This commit is contained in:
Guillaume (gdi)
2022-06-16 14:44:52 +02:00
committed by qsm-odoo
parent 038ecd07fb
commit f28b75497d
@@ -262,7 +262,7 @@ odoo.define('website.s_website_form', function (require) {
// Prepare form inputs
this.form_fields = this.$target.serializeArray();
$.each(this.$target.find('input[type=file]'), function (outer_index, input) {
$.each(this.$target.find('input[type=file]:not([disabled])'), (outer_index, input) => {
$.each($(input).prop('files'), function (index, file) {
// Index field name as ajax won't accept arrays of files
// when aggregating multiple files into a single field value