From bc6806a005e74bcbae7cc5f73b5abbe2886ed313 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 26 Oct 2021 22:20:45 +0200 Subject: [PATCH 2/2] forms: prevent autosave from overwriting magictoken's data (#58028) autosave() needs to write into magictoken's data only when establishing the draft formdata, after that it's not needed anymore. Preventing it to further modify magictoken's data prevent race condition between AJAX call to autosave and normal form's submission by users. --- wcs/forms/root.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wcs/forms/root.py b/wcs/forms/root.py index 28449a96..8fe03c7a 100644 --- a/wcs/forms/root.py +++ b/wcs/forms/root.py @@ -1328,6 +1328,10 @@ class FormPage(Directory, FormTemplateMixin): self.feed_current_data(magictoken) form_data = session.get_by_magictoken(magictoken, {}) + # prevent autosave to write into session concurrently with user's + # submits, only do it when initializing the draft formdata. + if form_data.get('draft_formdata_id'): + form_data = form_data.copy() if not form_data: return result_error('missing data') -- 2.33.0