Development #38009
Rapport de cellules invalides dans Combo
0%
Description
A l'instar de ce qui est fait pour les sources données wcs, mais de manière transverse, avoir une page rapport "cellules invalides", qui listerait ces cellules, les cellules qui pointent vers une catégorie n'existant plus, une visu Bi-joe plus dispo, etc.
Dans le menu kebab de l'accueil, une entrée "Rapport d'anomalies" qui amène ainsi sur une liste de liens page/cellule (ex: "page assocations, démarches d'une catégorie"); sans détails ici parce qu'en fait on gagnera à marquer l'erreur directement sur la cellule (cf capture attachée), où il sera possible de la corriger (ou de supprimer la cellule).
Pour la récolte des erreurs, ça se fait donc de manière asynchrone, et le modèle "CellBase" gagnr un attribut invalid_reason_code (string) et une méthode get_invalid_reason() qui traduit le code dans le message intelligible repris dnas l'interface.
Pour un certain nombre de cellules il y a déjà un rendu asynchrone où on peut découvrir l'erreur et enregistrer l'erreur (ex: une cellule "démarches d'une catégorie" qui reçoit une 404 sur l'appel à w.c.s.); pour d'autres (ex les liens) il y aurait à ajouter ça (dans le job "hourly").
Il y a sans doute utilité à aussi ajouter au modèle un invalid_timestamp, qui permettrait par exemple après un certain temps de ne même plus tenter le rendu en front. (en retournant False dans is_visible).
Fichiers
Révisions associées
cells: a cell is not visible after 2 days of invalidity (#38009)
cells: if a cell is invalid, display it (#38009)
cells: w.c.s. cells invalid report (#38009)
cells: invalid cell report (#38009)
cells: data cells invalid report (#38009)
Historique
Mis à jour par Frédéric Péters il y a environ 4 ans
- Fichier categorie-invalide.png categorie-invalide.png ajouté
- Description mis à jour (diff)
- Priorité changé de Bas à Normal
Mis à jour par Lauréline Guérin il y a environ 4 ans
- Assigné à mis à Lauréline Guérin
- Priorité changé de Normal à Bas
Mis à jour par Lauréline Guérin il y a environ 4 ans
- Fichier 0006-cells-data-cells-invalid-report-38009.patch 0006-cells-data-cells-invalid-report-38009.patch ajouté
- Fichier 0005-cells-invalid-cell-report-38009.patch 0005-cells-invalid-cell-report-38009.patch ajouté
- Fichier 0004-cells-w.c.s.-cells-invalid-report-38009.patch 0004-cells-w.c.s.-cells-invalid-report-38009.patch ajouté
- Fichier 0003-cells-if-a-cell-is-invalid-display-it-38009.patch 0003-cells-if-a-cell-is-invalid-display-it-38009.patch ajouté
- Fichier 0002-cells-a-cell-is-not-visible-after-2-days-of-invalidi.patch 0002-cells-a-cell-is-not-visible-after-2-days-of-invalidi.patch ajouté
- Fichier 0001-cells-add-invalid-fields-38009.patch 0001-cells-add-invalid-fields-38009.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
je pose les patchs ici, pour avoir des retours, mais le boulot n'est pas forcément terminé.
J'ai traité les cellules w.c.s. et les cellules de type lien, feed, json du module data. On peut soit s'arrêter là, et créer d'autres tickets pour passer sur les autres cellules, soit je continue dans ce ticket.
Mis à jour par Frédéric Péters il y a environ 4 ans
J'écrivais "modèle "CellBase" gagne un attribut invalid_reason_code" et la branche suit ça mais à voir les migrations j'en viens à me demander si ça ne serait pas mieux d'avoir un modèle sur le côté, genre ValidityInfo, avec GenericForeignKey dedans.
Rapidement, je vois :
- Pro : pas de migration ajoutée partout, pas d'attributs à éviter dans get_default_form_class, éventuellement à zapper aussi des snapshots et de l'export/import
- Con : ça ajouterait le coût de la jointure pour que le is_visible() ne fasse pas de requête supplémentaire.
Tu en penses quoi ?
Mis à jour par Lauréline Guérin il y a environ 4 ans
Apparemment, faire du prefetch avec des GenericForeignKey ça se fait; je vais donc essayer :)
Mis à jour par Lauréline Guérin il y a environ 4 ans
- Statut changé de Solution proposée à En cours
Mis à jour par Lauréline Guérin il y a environ 4 ans
- Fichier 0006-cells-data-cells-invalid-report-38009.patch 0006-cells-data-cells-invalid-report-38009.patch ajouté
- Fichier 0005-cells-invalid-cell-report-38009.patch 0005-cells-invalid-cell-report-38009.patch ajouté
- Fichier 0004-cells-w.c.s.-cells-invalid-report-38009.patch 0004-cells-w.c.s.-cells-invalid-report-38009.patch ajouté
- Fichier 0003-cells-if-a-cell-is-invalid-display-it-38009.patch 0003-cells-if-a-cell-is-invalid-display-it-38009.patch ajouté
- Fichier 0002-cells-a-cell-is-not-visible-after-2-days-of-invalidi.patch 0002-cells-a-cell-is-not-visible-after-2-days-of-invalidi.patch ajouté
- Fichier 0001-cells-add-invalid-fields-38009.patch 0001-cells-add-invalid-fields-38009.patch ajouté
- Statut changé de En cours à Solution proposée
avec une generic FK
Mis à jour par Lauréline Guérin il y a environ 4 ans
Mis à jour par Frédéric Péters il y a environ 4 ans
En l'exécutant dans mon combo, qui est bien chargé en cellules invalides,
File "/home/fred/src/eo/combo/combo/apps/wcs/models.py", line 106, in save validity_info = populate_cache() File "/home/fred/src/eo/combo/combo/apps/wcs/models.py", line 90, in populate_cache for form in forms_response_json: TypeError: 'NoneType' object is not iterable
→
- for form in forms_response_json: + for form in forms_response_json or []:
Je serais aussi pour poser un timeout sur le requests.get(self.get_url()).
Et pour la présentation, je remplacerais mon /!\ par l'icône adéquate :
-div.cell h3 span.invalid, -ul.list-of-links span.invalid { - color: red; +.invalid { + color: #df2240; +} + +.invalid::before { + font-family: FontAwesome; + content: "\f071"; /* exclamation-triangle */ + padding-right: 0.5em; }
Mis à jour par Lauréline Guérin il y a environ 4 ans
- Fichier 0006-cells-data-cells-invalid-report-38009.patch 0006-cells-data-cells-invalid-report-38009.patch ajouté
- Fichier 0004-cells-w.c.s.-cells-invalid-report-38009.patch 0004-cells-w.c.s.-cells-invalid-report-38009.patch ajouté
- Fichier 0003-cells-if-a-cell-is-invalid-display-it-38009.patch 0003-cells-if-a-cell-is-invalid-display-it-38009.patch ajouté
- for form in forms_response_json: + for form in forms_response_json or []:
=> ok
Je serais aussi pour poser un timeout sur le requests.get(self.get_url()).
=> ajouté
Et pour la présentation, je remplacerais mon /!\ par l'icône adéquate :
J'ai fait un peu différemment pour éviter d'afficher l'icône si le span .invalid est vide
Mis à jour par Frédéric Péters il y a environ 4 ans
J'ai fait un peu différemment pour éviter d'afficher l'icône si le span .invalid est vide
Je serais plutôt pour ne pas inclure le <span class="invalid"> dans ce cas. (je trouve assez moche les <span> vides juste pour le style).
Aussi red → #df2240 c'était pour avoir un rouge offrant un contraste jugé ok côté accessibilité (>= 4.5).
Mis à jour par Lauréline Guérin il y a environ 4 ans
les span invalid vides, j'en ai besoin pour pouvoir le remplir au post d'un formulaire en ajax (exemple: édition d'une cellule lien, ou d'une cellule w.c.s.)
Mis à jour par Frédéric Péters il y a environ 4 ans
zut :/ tant pis, juste mon rouge et je pense ça sera bon.
Mis à jour par Lauréline Guérin il y a environ 4 ans
- Fichier 0006-cells-data-cells-invalid-report-38009.patch 0006-cells-data-cells-invalid-report-38009.patch ajouté
- Fichier 0003-cells-if-a-cell-is-invalid-display-it-38009.patch 0003-cells-if-a-cell-is-invalid-display-it-38009.patch ajouté
j'ai fait autrement dans le js de rafraichissement :)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Je trouve ça très sympa, peut-être un dernier truc, je trierais les cellules invalides en fonction de (page.order, cell.order).
Mis à jour par Lauréline Guérin il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit cc5aaa93e49c1b9b2980aee98b0ee14c1c60c1b7 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Thu Feb 20 14:39:46 2020 +0100 cells: data cells invalid report (#38009) commit 7299d1d835b02b8c7bfa35512ca5c81c2eb7cf10 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Tue Feb 18 13:55:18 2020 +0100 cells: invalid cell report (#38009) commit 7046049aa0af0ea8e14c6d4bf4549cea56694e3b Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Mon Feb 17 16:15:21 2020 +0100 cells: w.c.s. cells invalid report (#38009) commit 6fa8bf883ab5bb90280d7ee0f2036638f4f148be Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Mon Feb 17 14:09:56 2020 +0100 cells: if a cell is invalid, display it (#38009) commit 39234986fe6042e04b83c7eae10502930318d6a5 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Mon Feb 17 10:08:24 2020 +0100 cells: a cell is not visible after 2 days of invalidity (#38009) commit 957864921bb44aa5fe41766a52d2b815297df96b Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Mon Feb 17 10:07:57 2020 +0100 cells: add invalid fields (#38009)
J'ai trié les cellules invalides selon page.order, page.pk, cell.order (j'ai ajouté cell.pk au cas où des pages aient le même order)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
cells: add invalid fields (#38009)