Projet

Général

Profil

Development #16524

Possibilité de saut "en arrière"

Ajouté par Frédéric Péters il y a presque 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
27 mai 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à w.c.s. - Development #4228: Actions de workflow Appel et RetourFermé17 janvier 2014

Actions
Lié à w.c.s. - Development #16473: Saut vers "statut précédent"Rejeté24 mai 2017

Actions

Révisions associées

Révision d7713f37 (diff)
Ajouté par Frédéric Péters il y a presque 7 ans

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.

Historique

#1

Mis à jour par Frédéric Péters il y a presque 7 ans

Le patch que j'avais mis dans #4228, avec comme seul changement la référence au ticket.

#2

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

#3

Mis à jour par Frédéric Péters 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).

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.

#4

Mis à jour par Frédéric Péters il y a presque 7 ans

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.

#5

Mis à jour par Frédéric Péters il y a presque 7 ans

#6

Mis à jour par Frédéric Péters il y a presque 7 ans

#7

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

#8

Mis à jour par Frédéric Péters il y a presque 7 ans

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.

#9

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.

#10

Mis à jour par Frédéric Péters il y a presque 7 ans

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

#11

Mis à jour par Thomas Noël il y a presque 7 ans

Ack

#12

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.
#13

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

Formats disponibles : Atom PDF