workflows: add option to limit global actions to some statuses (#65898) #126

Merged
fpeters merged 3 commits from wip/65898-not-global-global-action into main 2023-02-28 16:09:04 +01:00
Owner
No description provided.
fpeters force-pushed wip/65898-not-global-global-action from 98e5b45b44 to fdddd70d25 2023-02-20 10:00:11 +01:00 Compare
fpeters force-pushed wip/65898-not-global-global-action from fdddd70d25 to fcb0054385 2023-02-20 15:19:45 +01:00 Compare
fpeters force-pushed wip/65898-not-global-global-action from fcb0054385 to 2439f37948 2023-02-20 15:59:31 +01:00 Compare
fpeters force-pushed wip/65898-not-global-global-action from 8222007c75 to a36852b169 2023-02-24 14:33:30 +01:00 Compare
fpeters force-pushed wip/65898-not-global-global-action from a36852b169 to 883a88b35f 2023-02-24 15:00:49 +01:00 Compare
fpeters changed title from WIP: workflows: add option to limit global actions to some statuses (#65898) to workflows: add option to limit global actions to some statuses (#65898) 2023-02-28 06:27:15 +01:00
Author
Owner

La base c'est le premier commit (workflows: add option to limit global actions to some statuses), il ajoute un attribut statuses sur le déclencheur manuel d'une action globale, et ajoute le nécessaire côté javascript pour que les boutons soient affichés ou pas selon les demandes/fiches sélectionnées.

Ma crainte avec ça c'est la prolifération d'actions globales donc j'ai un deuxième commit qui modifie l'affichage des boutons de changement de statut dans les tableaux, ils étaient affichés uniquement quand le tableau était filtré sur le statut en question, c'est modifiée pour profiter des changements js du premier patch, ainsi ils peuvent être utilisés peu importe le filtrage du tableau, selon les dmandes/fiches cochées.

Avant de faire ce patch j'ai mesuré (SaaS/prod) le temps que prenait la lecture d'un workflow pour y trouver toutes les actions de saut manuel possibles (histoire de ne pas ralentir l'affichage des vues de traitement) et je n'ai pas eu un seul workflow où ça prenait un millième de secondes, donc bien ok.

Pour info le script utilisé sur le SaaS/prod pour mesurer ça :

import time

from wcs.workflows import Workflow

def get_items(workflow):
    for status in workflow.possible_status or []:
        yield from status.items or []


for workflow in Workflow.select(ignore_errors=True):
    t0 = time.time()
    buttons = len([x for x in get_items(workflow) if x.key == 'choice' and x.identifier])
    t1 = time.time()
    print('%.6f - %s' % (t1-t0, workflow.get_admin_url()))
La base c'est le premier commit (workflows: add option to limit global actions to some statuses), il ajoute un attribut statuses sur le déclencheur manuel d'une action globale, et ajoute le nécessaire côté javascript pour que les boutons soient affichés ou pas selon les demandes/fiches sélectionnées. Ma crainte avec ça c'est la prolifération d'actions globales donc j'ai un deuxième commit qui modifie l'affichage des boutons de changement de statut dans les tableaux, ils étaient affichés uniquement quand le tableau était filtré sur le statut en question, c'est modifiée pour profiter des changements js du premier patch, ainsi ils peuvent être utilisés peu importe le filtrage du tableau, selon les dmandes/fiches cochées. Avant de faire ce patch j'ai mesuré (SaaS/prod) le temps que prenait la lecture d'un workflow pour y trouver toutes les actions de saut manuel possibles (histoire de ne pas ralentir l'affichage des vues de traitement) et je n'ai pas eu un seul workflow où ça prenait un millième de secondes, donc bien ok. Pour info le script utilisé sur le SaaS/prod pour mesurer ça : ``` import time from wcs.workflows import Workflow def get_items(workflow): for status in workflow.possible_status or []: yield from status.items or [] for workflow in Workflow.select(ignore_errors=True): t0 = time.time() buttons = len([x for x in get_items(workflow) if x.key == 'choice' and x.identifier]) t1 = time.time() print('%.6f - %s' % (t1-t0, workflow.get_admin_url())) ```
lguerin reviewed 2023-02-28 10:44:19 +01:00
@ -713,3 +713,2 @@
def test_backoffice_multi_actions_jump(pub):
def test_backoffice_multi_actions_some_status(pub):
create_superuser(pub)
create_environment(pub)
Owner

yeah :)

yeah :)
fpeters marked this conversation as resolved
@ -733,0 +778,4 @@
def test_backoffice_multi_actions_jump(pub):
create_superuser(pub)
FormDef.wipe()
Owner

il manque un Workflow.wipe() non ?

il manque un Workflow.wipe() non ?
Author
Owner

Ça passe sans mais oui autant nettoyer.

Ça passe sans mais oui autant nettoyer.
@ -84,0 +79,4 @@
role_visible = true;
} else if (key == 'visible_all_status') {
status_visible = true;
continue;
Owner

pourquoi continue ici seulement ?

pourquoi continue ici seulement ?
Author
Owner

En effet inutile vu le reste de la boucle.

En effet inutile vu le reste de la boucle.
fpeters force-pushed wip/65898-not-global-global-action from 883a88b35f to 273fe46fb6 2023-02-28 13:49:16 +01:00 Compare
Author
Owner

J'ai ajouté un troisième commit (backoffice: do not add global actions externally triggered as buttons) pour corriger un bug qui faisait qu'une action globale avec déclencheur externe était reprise dans les actions de masse.

J'ai ajouté un troisième commit (backoffice: do not add global actions externally triggered as buttons) pour corriger un bug qui faisait qu'une action globale avec déclencheur externe était reprise dans les actions de masse.
lguerin approved these changes 2023-02-28 15:58:23 +01:00
fpeters merged commit 26dfa74135 into main 2023-02-28 16:09:04 +01:00
fpeters deleted branch wip/65898-not-global-global-action 2023-02-28 16:09:04 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/wcs#126
No description provided.