Projet

Général

Profil

Development #53481

l'interface pour l'héritage des rôles est trop pénible

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
27 avril 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Il y a la demande fonctionnelle de mettre dans un rôle "Agent" tous les rôles existants (modifier "Contient les membres des rôles") et c'est apparemment trop pénible via l'interface. (#53467).

Il doit y avoir à réfléchir pour rendre ça moins pénible.


Fichiers

Capture d’écran de 2021-05-20 10-35-36.png (150 ko) Capture d’écran de 2021-05-20 10-35-36.png Mikaël Ates, 20 mai 2021 10:40
0002-manager-add-separate-role-inheritance-table-views-53.patch (23,3 ko) 0002-manager-add-separate-role-inheritance-table-views-53.patch Valentin Deniaud, 28 juillet 2021 12:29
0001-manager-move-role-ajax-checkbox-js-to-file-53481.patch (3,39 ko) 0001-manager-move-role-ajax-checkbox-js-to-file-53481.patch Valentin Deniaud, 28 juillet 2021 12:29
0001-manager-factorize-SHOW_ALL_OU-default-value-53481.patch (2,03 ko) 0001-manager-factorize-SHOW_ALL_OU-default-value-53481.patch Valentin Deniaud, 02 août 2021 16:43
0003-manager-controle-role-inheritance-using-table-53481.patch (32,4 ko) 0003-manager-controle-role-inheritance-using-table-53481.patch Valentin Deniaud, 02 août 2021 16:43
0002-manager-move-role-ajax-checkbox-js-to-file-53481.patch (3,39 ko) 0002-manager-move-role-ajax-checkbox-js-to-file-53481.patch Valentin Deniaud, 02 août 2021 16:43
0001-wip.patch (3,98 ko) 0001-wip.patch Benjamin Dauvergne, 03 août 2021 10:38
Firefox_Screenshot_2021-08-03T08-37-57.207Z.png (97,5 ko) Firefox_Screenshot_2021-08-03T08-37-57.207Z.png Benjamin Dauvergne, 03 août 2021 10:38
Screenshot_2021-08-03 Connexion - bam.png (145 ko) Screenshot_2021-08-03 Connexion - bam.png Valentin Deniaud, 03 août 2021 17:36
0003-manager-controle-role-inheritance-using-table-53481.patch (33 ko) 0003-manager-controle-role-inheritance-using-table-53481.patch Valentin Deniaud, 03 août 2021 18:13
0004-manager-display-inheritance-info-excerpt-in-table-on.patch (13 ko) 0004-manager-display-inheritance-info-excerpt-in-table-on.patch Valentin Deniaud, 03 août 2021 18:13

Révisions associées

Révision 5d14c6c8 (diff)
Ajouté par Valentin Deniaud il y a plus de 2 ans

manager: factorize SHOW_ALL_OU default value (#53481)

Révision d052b5b2 (diff)
Ajouté par Valentin Deniaud il y a plus de 2 ans

manager: move role ajax checkbox js to file (#53481)

Révision 34989090 (diff)
Ajouté par Valentin Deniaud il y a plus de 2 ans

manager: controle role inheritance using table (#53481)

Révision c7dd8f7f (diff)
Ajouté par Valentin Deniaud il y a plus de 2 ans

manager: display inheritance info excerpt in table on role page (#53481)

Historique

#1

Mis à jour par Mikaël Ates il y a presque 3 ans

Lors de certaines opérations il est souhaité ajouter "en masse" des rôles dans les champs d'héritage.

Par exemple, on se retrouve à créer un rôle Agent dans une OU qui doit contenir tous les utilisateurs des rôles existants de cette même OU (à 2 ou 3 exceptions près).

Le champs type ahead va permettre de filtrer les rôles de l'OU en saisissant les premières lettres de l'OU. Il est alors possible de faire une sélection multiple avec la touche contrôle ce qui va éviter de repasser par la recherche type ahead (+ défilement) pour chaque rôle. Cependant après chaque sélection de rôle avec la touche contrôle, la liste remonte au premier élément sélectionné ce qui demande de refaire défiler la liste des sélectionné, ce qui devient assez "pénible", lorsqu'il y a 80 rôles concernés.

Aussi la touche shift pour sélectionner plusieurs rôles qui se suivent ne fonctionne pas. Cela permettrait en une seule passe de sélectionner tous les rôles de l'OU.

Quand on édite ces options, on ne voit pas les rôles déjà sélectionnés. Et la suppression se fait donc uniquement en dehors de la fenêtre de sélection, avec le picto '-' à côté du rôle.

La sélecteur de rôle dans les autres modules de Publik répond aux remarques ci-dessus. La recherche type ahead y est cependant moins intuitive que dans le sélecteur actuel et ne fonctionnera qu'une fois que l'on a cliqué sur un des rôles. Aussi si on a déjà des rôles de sélectionné, cela va faire perdre les rôles sélectionnés. On peut donc quasiment considérer que le changement de type de sélecteur ferait perdre le type ahead au profit des autres fonctionnalités.

#2

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

Bon l'idée qui tiendrait la corde ce serait d'avoir un écran dédié avec recherche plus sélection sur page et bouton 'sélectionner tout' comme dans l'admin Django, ou bien juste d'avoir un select à l'ancienne comme dans les autres briques ?

#3

Mis à jour par Mikaël Ates il y a presque 3 ans

Un exemple en capture.

Dans le type ahead je tape "Montpellier". Cela va faire ressortir des rôles qui ne sont pas de l'OU Montpellier et donc un "sélectionner tout" ne conviendra pas.

Une piste serait avec ce widget de rendre opérationnel la touche shift et de faire que l'utilisation de la touche contrôle ne renvoie pas vers le premier sélectionné.

Ensuite, envisager une amélioration comme la possibilité d'un filtre option sur une OU et un bouton sélectionner tout serait un plus.

Il y a 8000 rôles à Montpellier, un widget classique qui ferait apparaître tous les rôles ne conviendra pas.

#4

Mis à jour par Valentin Deniaud il y a presque 3 ans

Le plus simple ça serait à mon avis de virer select2 et d'avoir une page dédiée qui soit analogue à celle de l'ajout d'un rôle à un utilisateur, enrichie pour l'occasion d'un bouton pour tout sélectionner. Qu'est-ce que tu en dis ?

#5

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

Ce serait dommage de rajouter un click pour la majorité des cas où un rôle n'a pas tant de relations que ça et qu'on veut juste consulter d'un coup d'oeuil. On pourrait continuer à afficher un extrait des parents et des enfants et seul l'édition se ferait sur un écran dédié avec la liste paginée et recherche.

#6

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Assigné à mis à Valentin Deniaud

Benjamin Dauvergne a écrit :

On pourrait continuer à afficher un extrait des parents et des enfants et seul l'édition se ferait sur un écran dédié avec la liste paginée et recherche.

C'est parti pour ça.

#7

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Est-ce que je garde le bouton « - » qui permet d'enlever un rôle dans la liste des parents/enfants, ou tout passe par la page d'édition ?

#8

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Plutôt fouilli toutes ces histoires, voilà un premier jet, je suis preneur de gens qui testent en vrai (mais ça sera de toute façon appelé à évoluer, notamment je n'ajouterais pas le bouton pour tout sélectionner ici).

#9

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Valentin Deniaud a écrit :

Est-ce que je garde le bouton « - » qui permet d'enlever un rôle dans la liste des parents/enfants, ou tout passe par la page d'édition ?

Je dirai que tout passe par la page d'édition, une seule façon de faire les choses, en page de rôles on visualise, partiellement si on ne peut pas mieux.

#10

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Je n'ai pas encore tout lu attentivement, donc peut-être que je rate un truc, mais je me disais que toutes les vues Role{Add/Delete}{Child/Parent}View pourraient disparaître remplacé par une unique RoleRelationView paramétrée soit sur la relation parent soit sur la relation child qui gèrerait ajout et suppression et serait instanciée deux fois; en fait je pensais qu'on aurait forcément moins de code à la fin.

#11

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Statut changé de Solution proposée à En cours

Il y aura moins de code quand j'aurai supprimé les vues Delete, pour l'instant elles y sont. Quand à factoriser les deux vues parent/enfant en une, je peux essayer mais j'ai peur que ce soit imbitable, les permissions ne sont pas les mêmes, ni les différentes méthodes à appeler sur les querysets/objets.

#12

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Voilà, en supprimant les vues de suppression :

262 insertions(+), 260 deletions(-)

2 lignes en plus tout compte fait, on va dire que c'est parce que j'ai ajouté un test :)

#13

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Je pense que l'affichage des parents et des enfants mériterait une nouvelle présentation qui les mettent plus en avant, puisque ça semble très utilisé; j'ai fait une ébauche (patch wip et screenshot attaché) à base de .section/h3 comme sur passerelle et j'ai intégré le tiret cadratin au style CSS plutôt qu'au template (j'ai mis ça en style inline c'est une ébauche).


Le chemin des vues dans l'URL devrait être modifié en children/edit/ et parents/edit/ plutôt que add-child / add-parent.


Les listes de rôles enfants/parent devraient être tronquées au delà de 10 et des points de suspension ajoutés.


Qu'on édite les enfants ou les parents, chez moi ça affiche le même titre de page "Ajouter un rôle comme membre", ça devrait être renommé en "Éditer les rôles membres" pour les enfants et "Éditer les rôles dont on hérite des permissions" (si tu trouves plus simple/clair n'hésite pas) pour les parents.

#14

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

Ça fait vraiment soupe illisible d'avoir les rôles à la suite les uns des autres, c'est un problème de l'interface actuelle; pour les listes https://styleguide.entrouvert.com/motifs/liste-d-objets/

#15

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

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

Ça fait vraiment soupe illisible d'avoir les rôles à la suite les uns des autres, c'est un problème de l'interface actuelle; pour les listes https://styleguide.entrouvert.com/motifs/liste-d-objets/

Ok, limité à 10 éléments ça ne sera pas un changement trop violent.

#16

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Benjamin Dauvergne a écrit :

Le chemin des vues dans l'URL devrait être modifié en children/edit/ et parents/edit/ plutôt que add-child / add-parent.

Corrigé, sans même le edit (cohérent avec la vue /users/42/roles/).

Je pense que l'affichage des parents et des enfants mériterait une nouvelle présentation qui les mettent plus en avant
Les listes de rôles enfants/parent devraient être tronquées au delà de 10 et des points de suspension ajoutés.

Affichage revu avec une liste tronquée, dans un nouveau commit.

Qu'on édite les enfants ou les parents, chez moi ça affiche le même titre de page "Ajouter un rôle comme membre", ça devrait être renommé en "Éditer les rôles membres" pour les enfants et "Éditer les rôles dont on hérite des permissions" (si tu trouves plus simple/clair n'hésite pas) pour les parents.

La variation du titre fonctionne, c'est juste que dans les trads

locale/fr/LC_MESSAGES/django.po:msgid "Add parent role" 
locale/fr/LC_MESSAGES/django.po-msgstr "Ajouter ce rôle comme membre" 
locale/fr/LC_MESSAGES/django.po:msgid "Add child role" 
locale/fr/LC_MESSAGES/django.po-msgstr "Ajouter un rôle comme membre" 

Je propose d'avoir la discussion sur cette sémantique dans un prochain ticket.

#17

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée

Ok.

#18

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit c7dd8f7f8078c54513f2204e7565c160814e3b40
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Tue Aug 3 16:08:09 2021 +0200

    manager: display inheritance info excerpt in table on role page (#53481)

commit 34989090b06f67ca08e06cd04379634a58d83107
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Mon Jul 26 16:03:12 2021 +0200

    manager: controle role inheritance using table (#53481)

commit d052b5b29df996bbc1fd2035360160723b03f0d9
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Mon Jul 26 16:02:34 2021 +0200

    manager: move role ajax checkbox js to file (#53481)

commit 5d14c6c8d6d21fbc5f947c7ca066945c49b28518
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Mon Aug 2 16:18:51 2021 +0200

    manager: factorize SHOW_ALL_OU default value (#53481)
#19

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

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF