Development #9091
Évolution de l'action de dispatch
0%
Description
Pour le moment elle mappe une fonction à un nouveau rôle mais on se trouve dans beaucoup de situations à devoir les multiplier (s'il y a "pomme" dans le champ alors rôle "compote", s'il y a "abricot" alors rôle "confiture", etc.).
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Fichier 0001-js-make-it-possible-to-dynamically-show-hide-widgets.patch 0001-js-make-it-possible-to-dynamically-show-hide-widgets.patch ajouté
- Fichier 0002-form-change-WidgetListAsTable-to-use-the-global-rend.patch 0002-form-change-WidgetListAsTable-to-use-the-global-rend.patch ajouté
- Fichier 0003-workflows-add-possibility-to-dispatch-function-accor.patch 0003-workflows-add-possibility-to-dispatch-function-accor.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Le premier patch permet de contrôler l'affichage de champs selon la position d'un bouton radio (l'autre possibilité c'était d'ajouter un bouton "Appliquer" mais je me suis dit qu'on était finalement en 2016).
Le deuxième patch il retire le .render() custom de WidgetListAsTable, dans la mesure où il était à un moment redevenu identique au render() global. (l'appel au "render(self)" est un peu bizarre mais c'est parce qu'on n'a pas d'héritage très propre là-dedans (#5790).
Le troisième patch est enfin le "digital dynamic dispatch™ (patent pending)"; il y avait une hésitation possible, sur le fait de faire le dispatch sur la valeur d'une variable ou alors de le faire sur l'évaluation d'une expression. (définir une fois qu'on dispatch sur form_var_fruit, et puis que "pomme" donne le rôle "Compote" et "abricot" le rôle "Confiture", ou alors définit que form_var_fruit=="pomme" donne le rôle "Compote", et form_var_fruit=="abricot" le rôle "Confiture"). La deuxième forme permet plus de variétés mais la première correspond mieux à ce qui est demandé pour Montpellier, j'ai donc pris celle-là. Et il sera toujours temps d'ajouter un mode supplémentaire "Automatique (expressions)" plus tard.
Mis à jour par Thomas Noël il y a plus de 8 ans
(il aura aussi le mode où la donnée (form_var_xxxx ou data_source.affectation) donne directement le nom du rôle, et hop ; mais pas maintenant, ok)
Mis à jour par Thomas Noël il y a plus de 8 ans
pour éviter qu'un dispatch s'execute de travers après des modifs de rôle, je crois qu'il serait bon que le new_role_id soit testé avant le « formdata.workflow_roles[self.role_key] = str(new_role_id)
» final. (testé = est-ce que ce rôle existe... )
C'est pas une super protection, ceci dit (un autre role_id peut avoir pris la place de l'ancien) ; c'est juste dans le cadre d'utilisation d'uuid (Publik) c'est quasi impossible. Mais c'est justement là avec Publik que les rôles sont un peu "fluctuants".
A ce sujet, il faudra gérer l'import/export de cette action de workflow :/
Mis à jour par Frédéric Péters il y a plus de 8 ans
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Statut changé de En cours à Résolu (à déployer)
Après quelques modifs aux tests pour prendre en compte que les rôles devaient désormais exister pour être attribués.
commit 5ef4a2c48631cd5393614a3c3460fb5cdf31eef0 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Jan 4 16:04:22 2016 +0100 workflows: add possibility to dispatch function according to a variable (#9091) commit 8262d99e9013f5660318a413b9f9396f5afd0f88 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Jan 4 15:28:49 2016 +0100 form: change WidgetListAsTable to use the global render() method commit b92bec84599d583501f2d3c2189c5fdb4ad8c6b7 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Jan 4 14:46:50 2016 +0100 js: make it possible to dynamically show/hide widgets with radio buttons Give the parent radio buttons data-dynamic-display-parent="true" and the widgets that have to be shown/hidden a data-dynamic-display-child-of attribute with the @name of the parent and a data-dynamic-display-value attribute with the value that will show this element. form.add(RadiobuttonsWidget, 'foo', ..., options=[('1', 'Foo1), ('2', 'Foo2')], attrs={'data-dynamic-display-parent': 'true'}) form.add(StringWidget, 'bar', ..., attrs={'data-dynamic-display-child-of': 'foo', 'data-dynamic-display-value': 'Foo2'})
workflows: add possibility to dispatch function according to a variable (#9091)