Development #16524
Possibilité de saut "en arrière"
0%
Description
Dans #4228 se discute de longs plans, ticket ici pour un concret immédiat, la possibilité de poser un "marqueur" lors d'un saut, pour mémoriser le statut courant, et la possibilité dans un saut d'aller vers le "marqueur" précédemment posé.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 7 ans
- Fichier 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Le patch que j'avais mis dans #4228, avec comme seul changement la référence au ticket.
Mis à jour par Benjamin Dauvergne il y a presque 7 ans
Pour les développeurs de workflow je pense que ce serait bien d'afficher le contenu de la pile, dans la sidebar sous un titre "Liste des marqueurs" quand il y en a, dans l'ordre inverse (le dernier poussé en premier).
Mis à jour par Frédéric Péters il y a presque 7 ans
- Fichier 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch ajouté
Pour les développeurs de workflow je pense que ce serait bien d'afficher le contenu de la pile, dans la sidebar sous un titre "Liste des marqueurs" quand il y en a, dans l'ordre inverse (le dernier poussé en premier).
Je ne suis pas sûr d'avoir compris, mais j'ai ajouté dans le /inspect d'un formdata la pile des marqueurs, dans l'ordre inversé.
~~
Aussi, dans la pile, plutôt que juste poser status_id
je pose {'status_id': status_id}
, ce qui permettra plus facilement des évolutions.
Et j'ai retiré la petite refactorisation autour de is_waitpoint(), déplacée vers #16532.
Mis à jour par Frédéric Péters il y a presque 7 ans
- Fichier 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch ajouté
Et ici je déplace la nouvelle case à cocher en paramètre avancé et je n'affiche le choix "marqueur précédent" que si un saut du workflow a été défini comme posant un marqueur.
Mis à jour par Frédéric Péters il y a presque 7 ans
- Lié à Development #4228: Actions de workflow Appel et Retour ajouté
Mis à jour par Frédéric Péters il y a presque 7 ans
- Lié à Development #16473: Saut vers "statut précédent" ajouté
Mis à jour par Thomas Noël il y a presque 7 ans
Je ne comprends pas la modification dans formdata.get_status (le retrait de status_id = status.split('-')[1] ... comment ça peut marcher sans ça ?)
« get_previous_marked_status(self) » pourrait être renommée « pop_previous_marked_status(self) »
Dans cette même fonction, on pourrait vérifier que le status_id trouvé fait bien partie des possible_status ; dans le cas d'un workflow modifié entre temps ?
assert previous_status, 'failed to compute previous status' : c'est un debug ? pour moi on devrait juste ne rien faire dans ce cas (juste un log d'erreur)
Je remplacerais le update + del ici :
if self.workflow_data:
d.update(self.workflow_data)
# pass over workflow data to:
# - attach an extra url attribute to uploaded files
# - remove "private" attributes
for k, v in self.workflow_data.items():
if k[0] == '_':
del d[k]
continue
...
par
if self.workflow_data:
for k, v in self.workflow_data.items():
if k[0] == '_':
continue
d[k] = v
if isinstance(v, Upload):
# attach an extra url attribute to uploaded files:
...
dans wcs/workflows.py, « has_markers = False » : ne sert jamais, remplacé par un break/else:continue/break de professionnel
« Set marker on status » j'aurai voulu un truc qui se traduise par « Poser un marqueur pour un retour vers le statut actuel »
Lorsqu'un saut est configuré comme retour (saut vers «Previously Marked Status»), que fait-on par rapport au choix "poser un marqueur". On l'interdit ? (je pense que oui, il faudrait interdire cette combinaison).
Mis à jour par Frédéric Péters il y a presque 7 ans
- Fichier 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch ajouté
Thomas Noël a écrit :
Je ne comprends pas la modification dans formdata.get_status (le retrait de status_id = status.split('-')[1] ... comment ça peut marcher sans ça ?)
Parce qu'avant il y a :
+ if status.startswith('wf-'): + status = status[3:]
« get_previous_marked_status(self) » pourrait être renommée « pop_previous_marked_status(self) »
ok.
Dans cette même fonction, on pourrait vérifier que le status_id trouvé fait bien partie des possible_status ; dans le cas d'un workflow modifié entre temps ?
assert previous_status, 'failed to compute previous status' : c'est un debug ? pour moi on devrait juste ne rien faire dans ce cas (juste un log d'erreur)
En fait ça me va plutôt bien de commencer par éclater sur ce genre de bug de workflow / de comportement; et ajouter des précautions quand on verra que c'est mal géré.
Je remplacerais le update + del ici :
Yep, fait.
dans wcs/workflows.py, « has_markers = False » : ne sert jamais, remplacé par un break/else:continue/break de professionnel
De fait, retiré.
« Set marker on status » j'aurai voulu un truc qui se traduise par « Poser un marqueur pour un retour vers le statut actuel »
J'ai tapé "Set marker to jump back to current status".
Lorsqu'un saut est configuré comme retour (saut vers «Previously Marked Status»), que fait-on par rapport au choix "poser un marqueur". On l'interdit ? (je pense que oui, il faudrait interdire cette combinaison).
Sans doute mais dans cette phase je laisse le soin aux bricoleurs de se taper dessus.
Mis à jour par Thomas Noël il y a presque 7 ans
Ok pour cette mouture.
Reste un soucis : dans la liste des actions d'un workflows, et surtout l'affichage SVG, on pourrait voir les deux appels "aller" et "retour". Je pense qu'en modifiant "render_as_line" ça pourrait suffire.
- self.set_marker_on_status → on ajoute "(puis retour)" (ou autre ?)
- self.status == '_previous' → on ajoute "(retour)"
--- a/wcs/workflows.py +++ b/wcs/workflows.py @@ -1899,12 +1899,22 @@ class ChoiceWorkflowStatusItem(WorkflowStatusJumpItem): def render_as_line(self): if self.label: + more = '' + if self.set_marker_on_status: + more += ' ' + _('(and return)') + if self.status == '_previous': + more += ' ' + _('(return)') if self.by: - return _('Change Status "%(label)s" by %(by)s') % \ - { 'label' : self.label, - 'by' : self.render_list_of_roles(self.by) } + return _('Change Status "%(label)s" by %(by)s%(more)s') % { + 'label' : self.label, + 'by' : self.render_list_of_roles(self.by), + 'more': more + } else: - return _('Change Status "%s"') % self.label + return _('Change Status "%(label)s"%(more)s') % { + 'label': self.label, + 'more': more + } else: return _('Change Status (not completed)')
et bon, déjà c'est pas joli comme code, mais surtout, le SVG ne suit pas le render_as_line... zut.
Mis à jour par Frédéric Péters il y a presque 7 ans
- Fichier 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch 0001-workflows-add-possibility-to-mark-and-jump-to-marked.patch ajouté
(discussion jabber)
En fait je suis toujours gêné par le voculaire appel/retour, ça fait des explications compliquées je trouve; je vois plutôt ça comme un petit poucet qui pose des cailloux et puis il peut décider de retourner au dernier cahier posé et là il le reprend et puis repart, etc.
Du coup sur l'idée quand même, plutôt que le (and return) j'ai mis (and set marker), et pareil dans le libellé du svg, et (to last marker) sur le saut en arrière.
Mis à jour par Frédéric Péters il y a presque 7 ans
- Statut changé de En cours à Résolu (à déployer)
commit d7713f37c408751c0f2543f6d1e8012a251fc5bf Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun May 28 20:03:14 2017 +0200 workflows: add possibility to mark and jump to marked status (#16524) This keeps a stack of marked status and allow to pop back to previous ones.
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
workflows: add possibility to mark and jump to marked status (#16524)
This keeps a stack of marked status and allow to pop back to previous
ones.