Projet

Général

Profil

Bug #63935

erreur enregistrement cellule fiche (TypeError: the JSON object must be str, bytes or bytearray, not NoneType)

Ajouté par Sentry Io il y a environ 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
14 avril 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision a3f57864 (diff)
Ajouté par Frédéric Péters il y a environ 2 ans

wcs: force an (empty) value for custom schema (#63935)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 2 ans

  • Projet changé de Suivi des traces à Combo
#2

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).

#3

Mis à jour par Frédéric Péters il y a environ 2 ans

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)

#4

Mis à jour par Frédéric Péters il y a environ 2 ans

(voilà jenkins ok)

#5

Mis à jour par Lauréline Guérin il y a environ 2 ans

  • Statut changé de Solution proposée à Solution validée
#6

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)

#7

Mis à jour par Transition automatique il y a environ 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#8

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF