Bug #66038
La colonne is_at_endpoint n'est pas mise à jour quand on force le caractère final d'un statut
0%
Description
Il y a bien un trigger pour mettre à jour cette colonne à chaque écriture de la ligne en table, mais si la demande ne bouge pas, ce caractère final n'est pas mis à jour. Lors d'un changement du caractère final d'un statut, dans recreate_trigger() en plus de mettre à jour le trigger, on devrait appliquer immédiatement un update ciblé pour les lignes de la table dont la colonne is_at_endpoint diffère de la valeur qu'elle devrait avoir (le WHERE est important pour éviter trop d'écritures inutiles en base à chaque changement de quelque chose dans le workflow) quelque chose comme :
UPDATE formdata SET is_at_endpoint = status IN ({endpoint_status}) WHERE is_at_endpoint <> status IN ({endpoint_status})
(il faut peut-être faire le tour des autres colonnes pour voir si elles nécessiteraient aussi une mise à jour à ce moment)
Disclaimer: pour de grosses tables ça peut potentiellement rendre tout changement au workflow un peu lent :/
Historique
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
- Priorité changé de Normal à Haut
Je monte la priorité parce que c'est un bug quand même et qu'un client est impacté.
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Statut changé de Nouveau à Rejeté
C'est bien mis à jour, Workflow.store() provoquant un rebuild_security(must_update=True) si le statut final d'un statut a changé, qui provoque un update sur toutes les lignes, ce n'est donc pas le problème.