Project

General

Profile

Development #38049

ne pas modifier formdata quand il est copié ou picklé

Added by Benjamin Dauvergne 18 days ago. Updated 18 days ago.

Status:
Solution proposée
Priority:
Normal
Target version:
-
Start date:
28 Nov 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

FormData.__getstate__ modifie directement self.__dict__ au lieu de le copier avant.

0001-formdata-do-not-modify-__dict__-in-__getstate__-3804.patch View (1.02 KB) Benjamin Dauvergne, 28 Nov 2019 12:32 PM

History

#1 Updated by Benjamin Dauvergne 18 days ago

#2 Updated by Frédéric Péters 18 days ago

Ça pose quel problème, qui peut être exposé dans un test ?

#3 Updated by Benjamin Dauvergne 18 days ago

Ça ma causé des soucis sur #33186 (initialisation d'un brouillon), quand j'ai voulu ajouté le support "pickle-lazy" il fallait à la fois ajouter la nouvelle variable linked dans FormData.get_substitution_variables() mais aussi la supprimer1 dans FormData.get_static_substitution_variables() sinon linked était copié par deecopy() à un moment et le formdata transient se retrouver sans ._formdef.

On peut voir les traces du à ce souci sur jenkins2.

C'est pas en soi un bug existant puisque tout est fait pour l'éviter actuellement (je ne sais pas si c'est ça qui a mené au nettoyage de lazy avec des del), mais ça évitera à un autre d'avoir à s'arracher les cheveux plus tard.

1 https://git.entrouvert.org/wcs.git/commit/?h=wip/33186-Initialisation-d-un-brouillon&id=c13a885c982a8dc7297f4f5f29dad0f75d6665bd

2 https://jenkins.entrouvert.org/job/wcs-wip/job/wip%252F33186-Initialisation-d-un-brouillon/3/

Also available in: Atom PDF