Bug #63935
erreur enregistrement cellule fiche (TypeError: the JSON object must be str, bytes or bytearray, not NoneType)
0%
Description
Éventuellement voir avec Olivier ce qu'il fait.
https://sentry.entrouvert.org/entrouvert/publik/issues/55182/
TypeError: the JSON object must be str, bytes or bytearray, not NoneType (35 additional frame(s) were not displayed) ... File "django/forms/boundfield.py", line 32, in __str__ return self.as_widget() + self.as_hidden(only_initial=True) File "django/forms/boundfield.py", line 91, in as_widget value=self.value(), File "django/forms/boundfield.py", line 126, in value data = self.field.bound_data(self.data, data) File "django/contrib/postgres/forms/jsonb.py", line 47, in bound_data return json.loads(data) File "__init__.py", line 341, in loads raise TypeError(f'the JSON object must be str, bytes or bytearray, '
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ 2 ans
- Assigné à mis à Frédéric Péters
Pour reproduire : ajouter une cellule "contenu d'une fiche", clique sur "enregistrer".
(à corriger avant la mise en prod, je prends).
Mis à jour par Frédéric Péters il y a environ 2 ans
- Fichier 0001-wcs-force-an-empty-value-for-custom-schema-63935.patch 0001-wcs-force-an-empty-value-for-custom-schema-63935.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Ok ce qui se passe ici c'est qu'on a un premier temps avec l'objet formulaire dont on supprime le champ custom_schema,
if not self.instance.cached_json: […] del self.fields['custom_schema']
mais après on a cached_json et le formulaire bindé aux données postées et là le dictionnaire passé au formulaire (qui est le request.GET) ne contient pas custom_schema et il prend ça pour None et postgres/jsonb pète à l'idée de ne pas avoir de valeur.
Résultat moche patch, assurer dans custom_schema une valeur ("{}"), en modifiant le QueryDict (qui est immuable donc on doit faire une copie avant).
Dans les tests on passait à côté de ça parce que le début de test_card_cell_setup ne passe pas via WebTest, fait ses manipulations directement sur l'objet formulaire, et ne mettait pas dans la situation en question.
(attendre jenkins)
Mis à jour par Lauréline Guérin il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Thomas Noël il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit a3f57864736c8afd379eca098a3c1a8c2a79876b Author: Frédéric Péters <fpeters@entrouvert.com> Date: Thu Apr 14 16:26:14 2022 +0200 wcs: force an (empty) value for custom schema (#63935)
Mis à jour par Transition automatique il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
wcs: force an (empty) value for custom schema (#63935)