Project

General

Profile

Development #57566

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

Added by Benjamin Dauvergne 8 months ago. Updated 4 months ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
04 Oct 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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


Files

Associated revisions

Revision f751c730 (diff)
Added by Frédéric Péters 4 months ago

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

Revision 9359dc1e (diff)
Added by Frédéric Péters 4 months ago

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

Revision 95fcd0fa (diff)
Added by Frédéric Péters 4 months ago

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

History

#1

Updated by Benjamin Dauvergne 8 months ago

  • Description updated (diff)
#3

Updated by Benjamin Dauvergne 8 months ago

  • Description updated (diff)
#4

Updated by Frédéric Péters 8 months ago

  • Assignee set to Frédéric Péters
#5

Updated by Frédéric Péters 4 months ago

  • Status changed from Nouveau to 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

Updated by Frédéric Péters 4 months ago

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

Updated by Benjamin Dauvergne 4 months ago

  • Status changed from Solution proposée to Solution validée
#8

Updated by Frédéric Péters 4 months ago

  • Status changed from Solution validée to 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

Updated by Frédéric Péters 4 months ago

  • Status changed from Résolu (à déployer) to Solution déployée
#10

Updated by Transition automatique about 2 months ago

Automatic expiration

Also available in: Atom PDF