Development #57566
champ carte & inspecteur : si celui ci est NULL, on obtient une trace
0%
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
misc: do not crash inspect on invalid map values (#57566)
fields: detect and report more invalid map values (#57566)
Historique
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.
Mis à jour par Frédéric Péters il y a environ 2 ans
- Fichier 0003-fields-detect-and-report-more-invalid-map-values-575.patch 0003-fields-detect-and-report-more-invalid-map-values-575.patch ajouté
- Fichier 0002-misc-do-not-crash-inspect-on-invalid-map-values-5756.patch 0002-misc-do-not-crash-inspect-on-invalid-map-values-5756.patch ajouté
- Fichier 0001-tests-check-None-map-values-do-not-crash-the-inspect.patch 0001-tests-check-None-map-values-do-not-crash-the-inspect.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
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.
Mis à jour par Benjamin Dauvergne il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
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)
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
tests: check None map values do not crash the inspect view (#57566)