Development #53481
l'interface pour l'héritage des rôles est trop pénible
0%
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
Révisions associées
manager: move role ajax checkbox js to file (#53481)
manager: controle role inheritance using table (#53481)
manager: display inheritance info excerpt in table on role page (#53481)
Historique
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.
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 ?
Mis à jour par Mikaël Ates il y a presque 3 ans
- Fichier Capture d’écran de 2021-05-20 10-35-36.png Capture d’écran de 2021-05-20 10-35-36.png ajouté
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.
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 ?
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.
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.
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 ?
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Fichier 0002-manager-add-separate-role-inheritance-table-views-53.patch 0002-manager-add-separate-role-inheritance-table-views-53.patch ajouté
- Fichier 0001-manager-move-role-ajax-checkbox-js-to-file-53481.patch 0001-manager-move-role-ajax-checkbox-js-to-file-53481.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
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).
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.
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.
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.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Fichier 0001-manager-factorize-SHOW_ALL_OU-default-value-53481.patch 0001-manager-factorize-SHOW_ALL_OU-default-value-53481.patch ajouté
- Fichier 0003-manager-controle-role-inheritance-using-table-53481.patch 0003-manager-controle-role-inheritance-using-table-53481.patch ajouté
- Fichier 0002-manager-move-role-ajax-checkbox-js-to-file-53481.patch 0002-manager-move-role-ajax-checkbox-js-to-file-53481.patch ajouté
- Statut changé de En cours à Solution proposée
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 :)
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-wip.patch 0001-wip.patch ajouté
- Fichier Firefox_Screenshot_2021-08-03T08-37-57.207Z.png Firefox_Screenshot_2021-08-03T08-37-57.207Z.png ajouté
- Statut changé de Solution proposée à En cours
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.
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/
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.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Fichier Screenshot_2021-08-03 Connexion - bam.png Screenshot_2021-08-03 Connexion - bam.png ajouté
- Fichier 0004-manager-display-inheritance-info-excerpt-in-table-on.patch 0004-manager-display-inheritance-info-excerpt-in-table-on.patch ajouté
- Fichier 0003-manager-controle-role-inheritance-using-table-53481.patch 0003-manager-controle-role-inheritance-using-table-53481.patch ajouté
- Statut changé de En cours à Solution proposée
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.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Ok.
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)
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
manager: factorize SHOW_ALL_OU default value (#53481)