Projet

Général

Profil

Development #57566

champ carte & inspecteur : si celui ci est NULL, on obtient une trace

Ajouté par Benjamin Dauvergne il y a plus de 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
04 octobre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Cf. #57490

Si un champ carte est vide, l'inspecteur va faire getitem(lon/lat) ou getattr(None, 'lon'/'lat') sur un LaziFieldVarMap qui va taper dans LazyFieldVarComplex.__getitem__ qui va exécuter le code suivant :

    def __getitem__(self, key):
        try:
            return super().__getitem__(key)
        except KeyError:
            pass
        structured_value = self.get_field_var_value()
        if not structured_value:
            raise KeyError(key) <- on finit ici, structured_value == None pour un champ map non initialisé

Je vois deux possibilités:
1. surcharger lat/lon pour renvoyer None sur LazyFieldVarMap,
2. ne pas renvoyer lat/lon dans LazyFieldVarMap.inspect_keys() sur self._data.get(self._field.id) est None.

Et peut-être aussi ne pas planter la vue inspect sur une KeyError lors de de la génération de la vue des variables de substitution aplaties, juste journaliser une erreur pour sentry (sic)).


Fichiers

Révisions associées

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

tests: check None map values do not crash the inspect view (#57566)

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

misc: do not crash inspect on invalid map values (#57566)

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

fields: detect and report more invalid map values (#57566)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Description mis à jour (diff)
#3

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Description mis à jour (diff)
#4

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

  • Assigné à mis à Frédéric Péters
#5

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

  • Statut changé de Nouveau à En cours

Du ticket lié aucune des pages ne produit plus d'erreur.

Et à tester, un champ carte vide passe parfaitement dans l'inspect.

Par contre, un champ carte qui aurait une valeur pas vide mais invalide, par exemple "None;None" amène cette erreur 500.

#6

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

0001 pour tester que ça passe déjà bien avec None.

0002 pour ne pas crasher sur une valeur invalide.

0003 pour en amont refuser les données invalides.

#7

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

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

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit 95fcd0fa96ba631f145a13be2101bb48f3903216
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat Jan 22 20:30:09 2022 +0100

    fields: detect and report more invalid map values (#57566)

commit 9359dc1e63bd37372561dd8b6dced266cc545230
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat Jan 22 20:20:57 2022 +0100

    misc: do not crash inspect on invalid map values (#57566)

commit f751c730c03e29a7c6878577ca6a3632be536e29
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat Jan 22 20:17:39 2022 +0100

    tests: check None map values do not crash the inspect view (#57566)
#9

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

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

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

Automatic expiration

Formats disponibles : Atom PDF