Projet

Général

Profil

Development #9091

Évolution de l'action de dispatch

Ajouté par Frédéric Péters il y a plus de 8 ans. Mis à jour il y a environ 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
23 novembre 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision 5ef4a2c4 (diff)
Ajouté par Frédéric Péters il y a plus de 8 ans

workflows: add possibility to dispatch function according to a variable (#9091)

Historique

#2

Mis à jour par Frédéric Péters il y a plus de 8 ans

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.

#3

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)

#4

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 :/

#6

Mis à jour par Thomas Noël il y a plus de 8 ans

Ack

#7

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'})
#8

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Version cible mis à v1.27
#9

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF