Projet

Général

Profil

Bug #5180

New user and group management interface

Ajouté par Benjamin Dauvergne il y a presque 10 ans. Mis à jour il y a plus de 9 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
21 juillet 2014
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

It uses jQuery dialogs for editing users and roles, and all refresh is ajax based.


Fichiers

t.diff (3,4 ko) t.diff Frédéric Péters, 22 juillet 2014 15:15
0001-js-add-jquery.form.patch (60 ko) 0001-js-add-jquery.form.patch Benjamin Dauvergne, 13 août 2014 15:28
0002-js-add-purl.js.patch (9,48 ko) 0002-js-add-purl.js.patch Benjamin Dauvergne, 13 août 2014 15:28
0003-manager-add-gadjo-as-a-submodule.patch (2,22 ko) 0003-manager-add-gadjo-as-a-submodule.patch Benjamin Dauvergne, 13 août 2014 15:28
0004-manager-implement-all-views.patch (49,3 ko) 0004-manager-implement-all-views.patch Benjamin Dauvergne, 13 août 2014 15:28
0005-manager-l10n.patch (5,13 ko) 0005-manager-l10n.patch Benjamin Dauvergne, 13 août 2014 15:28
0001-add-style-for-big-informational-message-5180.patch (3,22 ko) 0001-add-style-for-big-informational-message-5180.patch Frédéric Péters, 14 août 2014 09:30
0001-js-destroy-dialog-when-closed.patch (1,04 ko) 0001-js-destroy-dialog-when-closed.patch gadjo patch for close event Benjamin Dauvergne, 14 août 2014 10:37
0006-managers-templates-add-missing-l10n.patch (1,81 ko) 0006-managers-templates-add-missing-l10n.patch Benjamin Dauvergne, 14 août 2014 10:37
0007-manager-update-fr-l10n.patch (2,63 ko) 0007-manager-update-fr-l10n.patch Benjamin Dauvergne, 14 août 2014 10:37
0008-manager-templates-change-default-button-caption-in-f.patch (1,04 ko) 0008-manager-templates-change-default-button-caption-in-f.patch Benjamin Dauvergne, 14 août 2014 10:37
0009-managers-views-remove-action-caption-for-editing-use.patch (851 octets) 0009-managers-views-remove-action-caption-for-editing-use.patch Benjamin Dauvergne, 14 août 2014 10:37
0010-managers-views-add-custom-default-button-title-for-R.patch (823 octets) 0010-managers-views-add-custom-default-button-title-for-R.patch Benjamin Dauvergne, 14 août 2014 10:37
0011-manager-views-add-mixin-to-RoleAddView-to-get-expect.patch (934 octets) 0011-manager-views-add-mixin-to-RoleAddView-to-get-expect.patch Benjamin Dauvergne, 14 août 2014 10:37

Révisions associées

Révision 92f831a3 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 9 ans

js: add jquery.form (refs #5180)

Révision cecc9f4d (diff)
Ajouté par Benjamin Dauvergne il y a plus de 9 ans

js: add purl.js (refs #5180)

Révision 13a50077 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 9 ans

manager: add gadjo as a submodule (refs #5180)

  • Use STATICFILES_DIR and TEMPLATE_DIRS to load gadjo templates and
    statics.
  • Use MANIFEST.in to install gadjo

Révision e9aeb280 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 9 ans

manager: implement all views (refs #5180)

Révision 5f08fd02 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 9 ans

manager: l10n (refs #5180)

Historique

#1

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

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Benjamin Dauvergne
#2

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

I duplicated #5180, I copy here initial comment by fpeters:

I had some mockups of those management pages, once created they would be linked from the portail-admin.

http://perso.entrouvert.org/~fred/portail-admin/mockups/authentic-utilisateurs-bis.html
http://perso.entrouvert.org/~fred/portail-admin/mockups/authentic-roles.html

#3

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

Full patchset can be cloned from http://repos.entrouvert.org/authentic.git/ on branch wip/manager. To test it you must go on http://localhost;8000/manager/users/ being logged with an user having permissions user.delete, user.change, user.add, group.add, group.delete, group.change, or being a superuser, which is faster to set.

#4

Mis à jour par Frédéric Péters il y a presque 10 ans

De loin, sans l'avoir appliqué en local :

Je préférerais l'utilisation directe de gadjo plutôt que d'en recopier la presque intégralité ici.

Pour le javascript minifié, je préférerais qu'il se créer lors du build plutôt que de le distribuer; ou via un système comme django-compressor.

#5

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

C'est du work in progress, quand gadjo existera sur pypi j'en dépendrai, ou alors peut-être préfère tu que je l'importe comme sous-module git ? Pour la minification, le problème ne me parait pas lié à ce ticket mais on peut bien sûr ouvrir un autre ticket sur l'idée plus générale d'utiliser django-compressor plus systématiquement, mais à mon avis ce travail serait plus utile sur portail-citoyen qui génère plus de vues.

#6

Mis à jour par Frédéric Péters il y a presque 10 ans

Ok, c'est bien de voir apparaitre cette demande ("quand gadjo existera sur pypi j'en dépendrai") maintenant, j'ai créé #5182 avec.

Je n'avais pas noté que c'était work in progress, je vais en tenir compte.

#7

Mis à jour par Frédéric Péters il y a presque 10 ans

To test it you must go on http://localhost;8000/manager/users/ [...]

Le fichier authentic2/manager/urls.py dans la branche wip/manager n'a pas de mention d'une partie users/, uniquement roles/, il reste des commits à y pousser ?

#8

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

Bizarre j'ai ça dans le commit manager: implement users views et je vois la même chose avec cgit:

diff --git a/authentic2/manager/urls.py b/authentic2/manager/urls.py
index 0dcbd04..44fb86b 100644
--- a/authentic2/manager/urls.py
+++ b/authentic2/manager/urls.py
@@ -6,5 +6,9 @@ urlpatterns = patterns('authentic2.views',
         url(r'^roles/$', views.roles, name='a2-manager-roles'),
         url(r'^roles/add/$', views.role_add, name='a2-manager-role-add'),
         url(r'^roles/(?P<role_ref>[^/]*)/$', views.role, name='a2-manager-role'),
+        url(r'^roles/(?P<role_ref>[^/]*)/edit/$', views.role_edit, name='a2-manager-role-edit'),
+        url(r'^users/$', views.users, name='a2-manager-users'),
+        url(r'^users/add/$', views.user_add, name='a2-manager-user-add'),
+        url(r'^users/(?P<pk>[^/]*)/$', views.user_edit, name='a2-manager-user-edit'),
         url(r'^', include('django_select2.urls')),
    )
#9

Mis à jour par Frédéric Péters il y a presque 10 ans

Je ne sais pourquoi il ne m'avait pas pris tous les commits de la branche, c'est ok maintenant.

#10

Mis à jour par Frédéric Péters il y a presque 10 ans

À l'utilisation, et pour une partie grossièrement présentées dans le diff ci-joint, voici mes notes et des modifications que je suggérerais :

  • suppression des liens transversaux "Users management" et "Roles management", ils ont là une position inattendue, et il doit y avoir une page générale /manager/ qui les reprend (c'est en tout cas le cas depuis le portail admin).
  • ajout d'un bouton "Rechercher" dans les formulaires de recherche (et suppression du bouton "Effacer"), input type="search" sur le champ d'entrée.
  • montée au niveau de la page de l'information sur le rôle sélectionné, avec les liens "add role" (quand pas de rôle sélectionné) et "edit" et "delete" (quand un rôle sélectionné) à la même position que sur la page des utilisateurs (et que sur les pages de passerelle)
  • (à voir) position de la recherche dans la page d'un rôle, au-dessus du tableau ça ne me semblait pas aller, je l'ai déplacée dans la barre latérale, mais ça pourrait peut-être aller sous le tableau.
  • dans le formulaire derrière "Ajouter un utilisateur à ce rôle :", il ne faudrait pas répéter "utilisateur".
  • dans les entêtes de colonne, il ne faudrait pas la capitalisation (elle se fait dans tables2, class Column, propriété header, je ne sais pas s'il y a un moyen propre de modifier ça).
  • dans le tableau listant les utilisateurs possédant un rôle, je mettrais en bout de ligne une icône "retirer" (icon-remove-sign, f057 dans font awesome). (plutôt que le context menu).
  • idéalement il y aurait un message quand on tente d'ajouter un utilisateur disposant déjà du rôle (ou plus idéal encore, qu'il ne soit pas proposé dans le <select>)
#11

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

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

À l'utilisation, et pour une partie grossièrement présentées dans le diff ci-joint, voici mes notes et des modifications que je suggérerais :

  • suppression des liens transversaux "Users management" et "Roles management", ils ont là une position inattendue, et il doit y avoir une page générale /manager/ qui les reprend (c'est en tout cas le cas depuis le portail admin).

Ok, et je pointe le lien accueil dessus en absence d'un setting qui fait pointer celui-ci sur le portail-admin.

  • ajout d'un bouton "Rechercher" dans les formulaires de recherche (et suppression du bouton "Effacer"), input type="search" sur le champ d'entrée.

Comment vide-t-on ce champ recherche ? Dans mon idée le bouton Effacer deviendrait une simple croix après passage du webdesign :)

  • montée au niveau de la page de l'information sur le rôle sélectionné, avec les liens "add role" (quand pas de rôle sélectionné) et "edit" et "delete" (quand un rôle sélectionné) à la même position que sur la page des utilisateurs (et que sur les pages de passerelle)

Delete, je vois mais edit je ne comprends pas,

  • (à voir) position de la recherche dans la page d'un rôle, au-dessus du tableau ça ne me semblait pas aller, je l'ai déplacée dans la barre latérale, mais ça pourrait peut-être aller sous le tableau.

Je vais tenter dessous.

  • dans le formulaire derrière "Ajouter un utilisateur à ce rôle :", il ne faudrait pas répéter "utilisateur".

Ok.

  • dans les entêtes de colonne, il ne faudrait pas la capitalisation (elle se fait dans tables2, class Column, propriété header, je ne sais pas s'il y a un moyen propre de modifier ça).

Bizarre à lire le code c'est un fallback quand on utilise pas de queryset, sinon c'est sensé prendre l'attribute verbose_name du champ du modèle, à rechercher.

  • dans le tableau listant les utilisateurs possédant un rôle, je mettrais en bout de ligne une icône "retirer" (icon-remove-sign, f057 dans font awesome). (plutôt que le context menu).

Ok.

  • idéalement il y aurait un message quand on tente d'ajouter un utilisateur disposant déjà du rôle (ou plus idéal encore, qu'il ne soit pas proposé dans le <select>)

Je préfère le message, l'autre solution ne donne pas de raison quand à l'absence de l'utilisateur dans la liste.

#12

Mis à jour par Frédéric Péters il y a presque 10 ans

  • ajout d'un bouton "Rechercher" dans les formulaires de recherche (et suppression du bouton "Effacer"), input type="search" sur le champ d'entrée.

Comment vide-t-on ce champ recherche ? Dans mon idée le bouton Effacer deviendrait une simple croix après passage du webdesign :)

Avec input type="search" il y a une petite croix qui apparait.

http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_input_type_search

  • montée au niveau de la page de l'information sur le rôle sélectionné, avec les liens "add role" (quand pas de rôle sélectionné) et "edit" et "delete" (quand un rôle sélectionné) à la même position que sur la page des utilisateurs (et que sur les pages de passerelle)

Delete, je vois mais edit je ne comprends pas,

Tu ne comprends pas quoi ? C'est le lien "Edit" qui existe déjà, il est déplacé vers la barre supérieure.

#13

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

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

  • ajout d'un bouton "Rechercher" dans les formulaires de recherche (et suppression du bouton "Effacer"), input type="search" sur le champ d'entrée.

Comment vide-t-on ce champ recherche ? Dans mon idée le bouton Effacer deviendrait une simple croix après passage du webdesign :)

Avec input type="search" il y a une petite croix qui apparait.

http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_input_type_search

Vu.

  • montée au niveau de la page de l'information sur le rôle sélectionné, avec les liens "add role" (quand pas de rôle sélectionné) et "edit" et "delete" (quand un rôle sélectionné) à la même position que sur la page des utilisateurs (et que sur les pages de passerelle)

Delete, je vois mais edit je ne comprends pas,

Tu ne comprends pas quoi ? C'est le lien "Edit" qui existe déjà, il est déplacé vers la barre supérieure.

Ok vu.

#14

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

Voilà j'ai intégré toutes les remarques, j'ai laissé le champ recherche à gauche finalement.

#15

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

Non j'ai oublié l'icône retirer...

#16

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

It would be nice if two latest commits ("integrate fred diff to templates" and "integrate comments from #5180") would be integrated into previous commits; also I would prefer to have gadjo used as a git submodule for the time being (this would be changed once it gets on pypi).

#17

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

  • Fichier 0001-manager-static-add-jquery.form.patch supprimé
#18

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

  • Fichier 0002-manager-static-add-purl.js.patch supprimé
#19

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

  • Fichier 0003-manager-static-add-jquery-ui-contextmenu.patch supprimé
#20

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

  • Fichier 0004-start-manager-app-import-gadjo-theme.patch supprimé
#21

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

  • Fichier 0005-manager-implement-role-view.patch supprimé
#22

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

  • Fichier 0006-manager-js-import-gadjo.js.patch supprimé
#23

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

  • Fichier 0007-manager-implement-users-views.patch supprimé
#24

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

  • Fichier 0008-manager-l10n.patch supprimé
#26

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

Ces patchs dépendent des patchs actuellement en attente sur gadjo.

#27

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

There's a few french strings, at least in roles.html.

I thought I mentioned this already, the title of the username column in French is wrongly capitalised ("Nom D'Utilisateur").

Gadjo didn't have the necessary style for big-msg-info; patch attached.

I wish a jquery confirmation dialog would be used when asking for deletion (instead of native js confirm()), but let's keep that for later.

The second time the "add user" dialog is opened, the "groups" field is not visible.

In the "Edit user" dialog I would use "Save" as confirmation button, not "Edit".

In the "Edit role" dialog the confirmation button is "Create", this should definitely be "Save".

#28

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

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

There's a few french strings, at least in roles.html.

Ok fixed on my side, I will attach discrete for each point later.

I thought I mentioned this already, the title of the username column in French is wrongly capitalised ("Nom D'Utilisateur").

I thought I had a fix for that but don't remember it, I have to look again in django-table code. The problem is fixed in the upstream trunk but still unreleased1.

Now looking at the code in tables.py, I fixed the problem2 on the "email" column and not on the username because I do not see the problem on the later since on my side the translated string is "Identifiant", I think you just lack a run of compilemessages in authentic source code.

Gadjo didn't have the necessary style for big-msg-info; patch attached.

Ok, works great.

The second time the "add user" dialog is opened, the "groups" field is not visible.

It only happens when using the close ([X]) button of the dialog and not with the Cancel button or the Save button. It happens because the close button does not destroy the content of the dialog but keep it as detached DOM nodes. When you open the dialog again the js script which initialize the group field target the wrong element (from the detached content), we need to catch the close event and destroy the dialog. Patch for gadjo attached.

In the "Edit user" dialog I would use "Save" as confirmation button, not "Edit".

Ok.

In the "Edit role" dialog the confirmation button is "Create", this should definitely be "Save".

Ok.

I attach discrete patches for review, I will rebase them later on the first ones.

1 https://github.com/bradleyayers/django-tables2/commit/bafce5887cb003ec434bc2c4c3c7478166b77d2f

2 The fix is to use mark_safe from django.utils.safestring on the verbose_name value so that django-tables2 does not try to titlecase it.

#29

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

Looks good to me.

#30

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

  • Statut changé de En cours à Solution déployée
#31

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

  • Statut changé de Solution déployée à Fermé

Formats disponibles : Atom PDF