Projet

Général

Profil

Bug #66038

La colonne is_at_endpoint n'est pas mise à jour quand on force le caractère final d'un statut

Ajouté par Benjamin Dauvergne il y a presque 2 ans. Mis à jour il y a plus d'un an.

Statut:
Rejeté
Priorité:
Haut
Assigné à:
-
Version cible:
-
Début:
08 juin 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

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

#2

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é.

#3

Mis à jour par Benjamin Dauvergne il y a plus d'un an

  • Description mis à jour (diff)
#4

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.

Formats disponibles : Atom PDF