Bug #20146
evolution.get_status retourne le statut actuel quand l'évolution n'est pas directement attachée à un statut
0%
Description
Dans un historique on se trouve avec evolution(new) puis evolution (pas de statut mais un commentaire) puis evolution (accepted) etc.
L'évolution sans statut, sa méthode get_status(), elle fallback sur le statut du formulaire, mais ça n'est pas correct du tout.
C'est particulièrement visible sur une demande terminée avec l'affichage de ✓ sur les statuts endpoint (parce que tous les endroits sans statut se trouvent considérés comme terminés…).
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-formdata-get-correct-status-for-intermediary-evoluti.patch 0001-formdata-get-correct-status-for-intermediary-evoluti.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a plus de 6 ans
La fonction juste en dessous (get_status_label) souffre du même bogue.
(sinon c'est un peu moche, mais je vois pas d'autre possibilité de résoudre ce soucis)
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-formdata-get-correct-status-for-intermediary-evoluti.patch 0001-formdata-get-correct-status-for-intermediary-evoluti.patch ajouté
En effet, voici le patch corrigé.
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-formdata-get-correct-status-for-intermediary-evoluti.patch 0001-formdata-get-correct-status-for-intermediary-evoluti.patch ajouté
Et le bon patch.
Mis à jour par Thomas Noël il y a plus de 6 ans
Je préférerais que soit repris le même algo, parce que là c'est pas cohérent, on reçoit avec get_status le bon id du status, mais on aurait un "Unknown" dans le label.
Mis à jour par Frédéric Péters il y a plus de 6 ans
bon id du status, mais on aurait un "Unknown"
Je ne vois pas cette situation.
on reçoit avec get_status le bon id du status
On appelle get_status donc le même algo, on obtient le bon objet Status, pas l'id, autant l'utiliser tout de suite.
Alternativement ça serait :
def get_status_label(self): status = self.get_status() return self.formdata.get_status_label(status.id) if status else _('Unknown')
Mais c'est dommage, je trouve, d'avoir ensuite self.formdata.get_status_label reparcourir l'ensemble des statuts pour trouver celui avec l'identifiant.
Mis à jour par Thomas Noël il y a plus de 6 ans
Frédéric Péters a écrit :
On appelle get_status donc le même algo, on obtient le bon objet Status, pas l'id, autant l'utiliser tout de suite.
J'ai lu de travers, confondu self.get_status() avec self.status ... Ack.
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Statut changé de En cours à Résolu (à déployer)
commit bed253cb753f1ffd90fb16c414cfa630ad00b770 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Nov 17 19:13:53 2017 +0400 formdata: get correct status for intermediary evolutions (#20146)
(je vais attendre que le jenkins tourne puis si j'ai le temps je tagguerai, sinon je verrai ça au retour).
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
formdata: get correct status for intermediary evolutions (#20146)