Project

General

Profile

Development #33186

Initialisation d'un brouillon

Added by Brice Mallet 7 months ago. Updated 10 days ago.

Status:
En cours
Priority:
Normal
Target version:
-
Start date:
17 May 2019
Due date:
17 Jan 2020
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Développer une action de WF qui créerait un brouillon dans le cours du WF :
En tant qu'usager :
  • action interactive (affichage d'un bouton)
  • dans le cours du WF, il ne serait pas possible de choisir la démarche concernée par l'initialisation du nouveau brouillon
En tant qu'administrateur fonctionnel :
  • paramétrage de cette action avec choix de la démarche du nouveau brouillon (identique au formulaire initial et liste explicite)
  • une fois choix du formulaire d'arrivée effectué, pouvoir régler, champ par champ, si un champ fait l'objet d'une recopie, ou pas

NB : toute ressemblance avec une action existante serait purement fortuite.

0004-formdata-ease-iteration-of-evolutions-parts-33186.patch View (1.79 KB) Benjamin Dauvergne, 18 May 2019 02:29 PM

0005-add-new-action-create-formdata-33186.patch View (16.1 KB) Benjamin Dauvergne, 18 May 2019 02:29 PM

0003-workflows-ease-filtering-common-fields-of-related-fo.patch View (1.79 KB) Benjamin Dauvergne, 18 May 2019 02:29 PM

0001-formdef-ease-access-to-widget-fields-33186.patch View (959 Bytes) Benjamin Dauvergne, 18 May 2019 02:29 PM

0002-workflows-ease-selecting-related-formdefs-33186.patch View (1.41 KB) Benjamin Dauvergne, 18 May 2019 02:29 PM

0003-add-new-action-create-formdata-33186.patch View (17.2 KB) Benjamin Dauvergne, 09 Nov 2019 05:51 PM

0002-formdata-ease-iteration-of-evolutions-parts-33186.patch View (5.7 KB) Benjamin Dauvergne, 09 Nov 2019 05:51 PM

0001-formdef-ease-access-to-fields-with-varname-33186.patch View (1.26 KB) Benjamin Dauvergne, 09 Nov 2019 05:51 PM

0003-add-new-action-create-formdata-33186.patch View (17.2 KB) Benjamin Dauvergne, 27 Nov 2019 11:58 PM

0005-add-first-test.patch View (4.99 KB) Benjamin Dauvergne, 27 Nov 2019 11:58 PM

0002-formdata-ease-iteration-of-evolutions-parts-33186.patch View (5.7 KB) Benjamin Dauvergne, 27 Nov 2019 11:58 PM

0004-formdata-make-LinkedFormdataSubstitutionProxy-work-i.patch View (3.89 KB) Benjamin Dauvergne, 27 Nov 2019 11:58 PM

0001-formdef-ease-access-to-fields-with-varname-33186.patch View (1.26 KB) Benjamin Dauvergne, 27 Nov 2019 11:58 PM

0003-add-new-action-create-formdata-33186.patch View (17.2 KB) Benjamin Dauvergne, 28 Nov 2019 01:55 AM

0005-add-first-test.patch View (4.99 KB) Benjamin Dauvergne, 28 Nov 2019 01:55 AM

0002-formdata-ease-iteration-of-evolutions-parts-33186.patch View (5.7 KB) Benjamin Dauvergne, 28 Nov 2019 01:55 AM

0004-formdata-make-LinkedFormdataSubstitutionProxy-work-i.patch View (4.38 KB) Benjamin Dauvergne, 28 Nov 2019 01:55 AM

0001-formdef-ease-access-to-fields-with-varname-33186.patch View (1.26 KB) Benjamin Dauvergne, 28 Nov 2019 01:55 AM

History

#1 Updated by Brice Mallet 7 months ago

  • Description updated (diff)

#2 Updated by Benjamin Dauvergne 7 months ago

Brice Mallet a écrit :

  • action interactive (affichage d'un bouton)

En général on ne fait plus d'action qui affiche un boutons, on utilise les sauts par généricité.

#3 Updated by Thomas Noël 7 months ago

Benjamin Dauvergne a écrit :

Brice Mallet a écrit :

  • action interactive (affichage d'un bouton)

En général on ne fait plus d'action qui affiche un boutons, on utilise les sauts par généricité.

Oui, ça permettra d'utiliser l'action dans d'autres situations, par exemple de créer plusieurs demandes, etc. L'action "création d'un brouillon" devra créer ce qu'il faut dans les variables pour permettre l'affichage d'un lien vers le brouillon créé, ou la redirection directe de l'usager vers ce brouillon, etc.

choix de la démarche du nouveau brouillon (identique au formulaire initial et liste explicite)

C'est à dire, soit on coche "même formulaire" (permettant de génériciser le workflow), soit on coche

champ par champ, si un champ fait l'objet d'une recopie, ou pas

Plus génériquement, pour un champ du formulaire cible, dire la valeur à lui attribuer, parmi : gabarit / expression Python / recopie du champ ayant le même identifiant.

Note : tout cela rend l'export/import de workflow assez hasardeux, il faudra sans doute rendre l'import intelligent (ne pas se baser que sur les slugs, prendre aussi en charge les noms des formulaires, etc)

#4 Updated by Benjamin Dauvergne 7 months ago

Thomas Noël a écrit :

Benjamin Dauvergne a écrit :

Brice Mallet a écrit :

  • action interactive (affichage d'un bouton)

En général on ne fait plus d'action qui affiche un boutons, on utilise les sauts par généricité.

Oui, ça permettra d'utiliser l'action dans d'autres situations, par exemple de créer plusieurs demandes, etc. L'action "création d'un brouillon" devra créer ce qu'il faut dans les variables pour permettre l'affichage d'un lien vers le brouillon créé, ou la redirection directe de l'usager vers ce brouillon, etc.

Plusieurs choses :
  • ça m'irait qu'on ait un evolutionpart spécifique pour ce job, dans le futur ça pourrait permettre des interactions entre formulaires (ça peut nous aider à résoudre le souci de workflow paralèlles, on lance d'autres workflow et après on pourrait attendre qu'ils atteignent un certain statut)
  • le nouvel evolutionpart pourra exporter un LazyFormData pointant sur le nouveau formulaire (prendre en compte le cas où le brouillon est supprimé)
  • ça pourrait être utile de ne pas se limiter au statut draft mais de pouvoir directement valider le formulaire (en lien avec mon premier point)

choix de la démarche du nouveau brouillon (identique au formulaire initial et liste explicite)

C'est à dire, soit on coche "même formulaire" (permettant de génériciser le workflow), soit on coche

champ par champ, si un champ fait l'objet d'une recopie, ou pas

Plus génériquement, pour un champ du formulaire cible, dire la valeur à lui attribuer, parmi : gabarit / expression Python / recopie du champ ayant le même identifiant.

Oui.

Note : tout cela rend l'export/import de workflow assez hasardeux, il faudra sans doute rendre l'import intelligent (ne pas se baser que sur les slugs, prendre aussi en charge les noms des formulaires, etc)

Oui et prévoir une étape de recollement comme pour les statuts lors de l'import de workflo

#5 Updated by Brice Mallet 7 months ago

"dans le futur ça pourrait permettre des interactions entre formulaires (ça peut nous aider à résoudre le souci de workflow paralèlles, on lance d'autres workflow et après on pourrait attendre qu'ils atteignent un certain statut)

OUAAAH, ce serait bien en effet

  • ça pourrait être utile de ne pas se limiter au statut draft mais de pouvoir directement valider le formulaire (en lien avec mon premier point)

oui

Qui c'est qui chiffre tout cela ? ;-)

#6 Updated by Benjamin Dauvergne 7 months ago

  • Assignee set to Benjamin Dauvergne

#7 Updated by Benjamin Dauvergne 7 months ago

Proposition entamé à partir de ma vision des choses (pouvoir créer des brouillons ou soumettre, donner accès aux formulaires créer depuis le workflow d'origine).

Les 4 premiers patchs ajoutent des méthodes pour faciliter l'implémentation.

Il reste plusieurs choses déterminer fermement :
  • choisir les noms des choses visible :
    • nom de l'action, ici 'Créer formulaire'
    • nom de la variable de substitution donnant accés aux nouveaux formulaires, ici sub_formdatas
    • choisir quoi faire au niveau du contexte de soumission :
      • j'ai repris la façon qu'a resoumission de faire un lien entre le formulaire d'origine et le nouveau, à voir si on veut garder ça, le rendre optionnel ou imaginer quelque chose de différent
      • je reprends l'utilisateur d'origine et le canal de soumission d'origine, idem à voir si on veut ça ou le rendre optionnel ou programmable
    • j'affiche un message dans l'historique (implémentation de view() sur mon EvolutionPart), pour être plus générique on ne devrait rien afficher et s'en remettre à l'action d'ajout d'un message dans l'historique
  • du CSS à faire pour afficher correctement FieldOrExpressionWidget (ça ne s'affiche pas en ligne)

C'est testé localement en jouant dans w.c.s. mais donc il manque les tests (dans test_admin_pages.py pour le backoffice fonctionnel, dans test_workflows.py pour tester unitairement la machinerie et les variables de substitution, dans test_backoffice_pages et test_form_pages pour tester le fonctionnement complet).

Je ne compte pas finir, je laisse ça pour celui qui finira.

#8 Updated by Frédéric Péters 7 months ago

  • Patch proposed changed from Yes to No
  • Status changed from Solution proposée to Nouveau
  • Assignee deleted (Benjamin Dauvergne)

Je ne compte pas finir, je laisse ça pour celui qui finira.

Je corrige le ticket pour noter que tu ne proposes pas de patch.

Reste à une personne motivée à répondre à la question de Brice, "Qui c'est qui chiffre tout cela ?", à celle-ci de chiffrer, puis à développer les tickets w.c.s. qui seront associés.

#9 Updated by Benjamin Dauvergne 7 months ago

Frédéric Péters a écrit :

Reste à une personne motivée à répondre à la question de Brice, "Qui c'est qui chiffre tout cela ?", à celle-ci de chiffrer, puis à développer les tickets w.c.s. qui seront associés.

Là ça m'a pris environ 5h entre le train hier et un peu aujourd'hui, je dirai encore 2j pour rentrer dans le code des tests et écrire les tests pour obtenir une couverture équivalente à resubmit. Je veux bien ouvrir le ticket et y accrocher mon code, plusieurs me semblent inutiles.

À noter dans mon code il manque aussi l'option même formulaire (ce n'est pas vraiment évident comparé à resubmit car il faudrait se restreindre aux champs communs entre les formulaires liés à ce workflow, et les repérer par leur varname, ici je les repèrent par leur id, c'est moins pérenne mais ça permet de viser plus de champs, c'est aussi un point discutable).

#14 Updated by Brice Mallet 3 months ago

  • Due date set to 02 Mar 2020
  • Assignee set to Emmanuel Cazenave

#16 Updated by Benjamin Dauvergne 3 months ago

  • Assignee changed from Emmanuel Cazenave to Benjamin Dauvergne

Je reprends le ticket si on me donne juste le choix entre voir mon travail jeter à la poubelle ou tout faire moi même.

#20 Updated by Benjamin Dauvergne 2 months ago

  • Project changed from Publik to w.c.s.

#21 Updated by Benjamin Dauvergne about 2 months ago

  • Due date changed from 02 Mar 2020 to 15 Nov 2019

#22 Updated by Benjamin Dauvergne about 1 month ago

J'ai retiré ce qui était devenu inutile, les tests arrivent, l'export XML est implémenté et tout se base sur les varname.

#23 Updated by Benjamin Dauvergne 21 days ago

  • Status changed from Solution proposée to En cours

#24 Updated by Benjamin Dauvergne 18 days ago

Petit souci avec le mode pickle-lazy, bizarrement ça ne foire qu'en python3, je n'ai pas compris pourquoi.

PS: ça foire aussi en py2, tout va bien.

#26 Updated by Brice Mallet 10 days ago

  • Due date changed from 15 Nov 2019 to 17 Jan 2020

Also available in: Atom PDF