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)).
Files
Associated revisions
misc: do not crash inspect on invalid map values (#57566)
fields: detect and report more invalid map values (#57566)
History
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.
Updated by Frédéric Péters 4 months ago
- File 0003-fields-detect-and-report-more-invalid-map-values-575.patch 0003-fields-detect-and-report-more-invalid-map-values-575.patch added
- File 0002-misc-do-not-crash-inspect-on-invalid-map-values-5756.patch 0002-misc-do-not-crash-inspect-on-invalid-map-values-5756.patch added
- File 0001-tests-check-None-map-values-do-not-crash-the-inspect.patch 0001-tests-check-None-map-values-do-not-crash-the-inspect.patch added
- Status changed from En cours to Solution proposée
- Patch proposed changed from No to Yes
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.
Updated by Benjamin Dauvergne 4 months ago
- Status changed from Solution proposée to Solution validée
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)
Updated by Frédéric Péters 4 months ago
- Status changed from Résolu (à déployer) to Solution déployée
tests: check None map values do not crash the inspect view (#57566)