Bug #28411
Le code de suivi semble varier entre première et deuxième page dans certains cas
100%
Description
Voir #28403.
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
Après quelques tests ça n'arrive que si l'URL contient un champ cancelurl comme là:
https://departement06.test.entrouvert.org/accueil-social/ => https://demarches-departement06.test.entrouvert.org/premiere-demande-d-apa-a-domicile/?cancelurl=https://departement06.test.entrouvert.org/accueil-social (premier lien en vert en bas de page)
Par contre si on va directement sur la demande le code de suivi est bien le même en première est deuxième page :
https://demarches-departement06.test.entrouvert.org/premiere-demande-d-apa-a-domicile/
Ce n'est qu'une vague hypothèse mais il semblerait qu'entre:
# wcs/forms/root.py def q_index(...): 591 self.feed_current_data(None) 592 # first hit on first page, if tracking code are enabled and we 593 # are not editing an existing formdata, generate a new tracking 594 # code. 595 if not self.edit_mode and self.formdef.enable_tracking_codes and not get_request().form.has_key('mt'): 596 tracking_code = get_publisher().tracking_code_class() 597 tracking_code.store() 598 token = randbytes(8) 599 get_request().form['magictoken'] = token 600 session.add_magictoken(token, {'future_tracking_code': tracking_code.id})
et
# wcs/forms/root.py def page(...): 282 # include a data-has-draft attribute on the <form> element when a draft 283 # already exists for the form; this will activate the autosave. 284 magictoken = get_request().form.get('magictoken') 285 if magictoken: 286 form_data = session.get_by_magictoken(magictoken, {}) 287 if self.formdef.enable_tracking_codes and not self.edit_mode: 288 form.attrs['data-has-draft'] = 'yes' 289 else: 290 form_data = {} 291 292 if page == self.pages[0] and not get_request().form.has_key('magictoken'): 293 magictoken = randbytes(8) 294 else: 295 magictoken = get_request().form['magictoken'] 296 form.add_hidden('magictoken', magictoken) 297 data = session.get_by_magictoken(magictoken, {}) 298 299 if page == self.pages[0] and get_request().form.has_key('cancelurl'): 300 cancelurl = get_request().form['cancelurl'] 301 session.add_magictoken(magictoken, {'__cancelurl': cancelurl})
On perde le magictoken alloué au moment de la génération du code de suivi.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-forms-do-not-overwrite-magic-formdata-with-cancelurl.patch 0001-forms-do-not-overwrite-magic-formdata-with-cancelurl.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a environ 5 ans
- Statut changé de Solution proposée à Solution validée
Sans le (fixes) dans l'intitulé du commit.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 97c064642eb26edb964c56aa22d192ac7c5fbb3e Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Wed Feb 27 00:39:48 2019 +0100 forms: do not overwrite magic formdata with cancelurl (fixes #28411)
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- % réalisé changé de 0 à 100
Appliqué par commit 97c064642eb26edb964c56aa22d192ac7c5fbb3e.
Mis à jour par Frédéric Péters il y a environ 5 ans
Sans le (fixes) dans l'intitulé du commit.
Et malgré tout ça a été poussé avec.
Mis à jour par Frédéric Péters il y a environ 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
forms: do not overwrite magic formdata with cancelurl (fixes #28411)