Project

General

Profile

Development #35773

import csv, ajout d'un rôle

Added by Marie Kuntz 10 months ago. Updated 8 months ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Start date:
03 Sep 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Lors de l'import csv d'utilisateurs, ce serait bien d'ajouter la possibilité de mettre les utilisateurs dans un rôle :
  • soit dans une colonne du csv (role id ? slug du rôle ?)
  • soit dans l'interface d'import, on ajoute un menu déroulant où l'on choisit le/les rôle.s

0001-csv_import-allow-adding-roles-35773.patch View (11.4 KB) Valentin Deniaud, 09 Oct 2019 04:28 PM

0001-csv_import-make-sure-has_errors-is-toggled-35773.patch View (942 Bytes) Valentin Deniaud, 14 Oct 2019 04:20 PM

1571062365.png View (72.3 KB) Valentin Deniaud, 14 Oct 2019 04:20 PM

0002-csv_import-allow-adding-roles-35773.patch View (12.4 KB) Valentin Deniaud, 14 Oct 2019 05:07 PM

0002-csv_import-allow-adding-roles-35773.patch View (12.5 KB) Valentin Deniaud, 16 Oct 2019 12:25 PM

0002-csv_import-allow-adding-roles-35773.patch View (15.1 KB) Valentin Deniaud, 21 Oct 2019 05:36 PM

0003-update-translations-35773.patch View (133 KB) Valentin Deniaud, 21 Oct 2019 05:36 PM

0003-update-translations-35773.patch View (20.6 KB) Valentin Deniaud, 22 Oct 2019 11:30 AM

38138

Related issues

Blocked by Authentic 2 - Bug #36832: import csv : certaines erreurs ne sont pas affichées Solution déployée 10 Oct 2019
Blocks Authentic 2 - Development #35774: import csv, gestion du mot de passe Solution déployée 03 Sep 2019

Associated revisions

Revision 64157da7 (diff)
Added by Valentin Deniaud 9 months ago

csv_import: make sure has_errors is toggled (#35773)

Revision f12353d8 (diff)
Added by Valentin Deniaud 9 months ago

csv_import: allow adding roles (#35773)

Revision 7f638585 (diff)
Added by Valentin Deniaud 9 months ago

update translations (#35773)

History

#1 Updated by Thomas Noël 10 months ago

Si les rôles sont dans le CSV rapidement arrive la question : est-ce la liste exhaustive des rôles de chaque utilisateur ? Autrement dit, retire-t-on à chacun les rôles qui ne lui sont pas attribués dans le CSV ?

#2 Updated by Marie Kuntz 10 months ago

Cas posé uniquement par les modifications. Je propose qu'il s'agisse d'un ajout simple de rôle, ça me paraît plus facile plus l'import si on ne doit pas passer sur les rôles de chaque utilisateur pour vérifier qu'on n'en oublie pas.

#3 Updated by Benjamin Dauvergne 10 months ago

  • Category set to 525

Réservons ce ticket pour un import via le CSV pas d'ajout à l'interface.

Il y a déjà un fonctionnalité de modifier prévue pour gérer ajout, suppression, écrasement.

Je dirai de ne prévoir que l'ajout d'un unique rôle par cellule, si besoin d'ajouter plusieurs rôles on fait plusieurs lignes, en général sur un import initial on ajoutera qu'un rôle (sinon c'est que la hiérarchie des rôles est mal branlée).

Par défaut je dirai de regarder le rôle uniquement dans l'OU cible ça évitera d'avoir à indiquer l'OU en général, on pourra désigner un rôle par son slug ou son nom, ça donnerait pour un import initial.

Par défaut le modifier serait "add" pour ajouter un rôle.

email key, first_name, last_name, _role_name
jo.jo@triffouilly.fr,Jo,Jo,Agent

pour un import d'ajout de rôle, on a juste besoin de la clé et des rôles :

email key,_role_name
jo.jo@triffouilly.fr,Agent
jo.jo@triffouilly.fr,"Administrateur fonctionnel" 
toto@triffouilly.fr,Agent

pour un import de suppression de rôle, idem on a juste besoin de la clé et des rôles, mais on ajoutera le modifier "delete"

email key,_role_name delete
jo.jo@triffouilly.fr,"Administrateur fonctionnel" 

pour un écrasement on mettra "clear", on est sûr ensuite que les utilisateurs visés n'ont plus que ces rôles là :

email key,_role_name clear
jo.jo@triffouilly.fr,Agent
jo.jo@triffouilly.fr,"Administrateur fonctionnel" 
toto@triffouilly.fr,Agent

Des commentaires ?

#4 Updated by Benjamin Dauvergne 10 months ago

  • Target version set to ticket facile

#5 Updated by Valentin Deniaud 9 months ago

  • Assignee set to Valentin Deniaud

#6 Updated by Benjamin Dauvergne 9 months ago

Je note que le ticket est toujours en attente de commentaires des gens concernés par le ticket, en l’occurrence Marie et Thomas.

#7 Updated by Valentin Deniaud 9 months ago

Qui ne dit mot consent !

Le seul point problématique du patch est le contournement des contraintes d'unicité, qui feraient normalement échouer l'ajout multiple. Si la solution que j'ai choisie est OK, il reste juste à faire la doc dans l'interface, et afficher d'une jolie couleur les lignes dupliquées pour ajout de rôle, facile avec le nouveau flag process_role ajouté sur ces lignes.

#8 Updated by Benjamin Dauvergne 9 months ago

La façon dont est implémenté "role clear" ne va pas fonctionner avec plusieurs ligne, il faut un clear par user par import, là le clear est fait sur chaque ligne.

Il faudrait déterminer le comportement à adopter si on a des colonnes marquées update avec des ajouts de rôles sur plusieurs lignes, je serai pour l'interdire i.e. on applique quand même la contrainte d'unicité si on a autre chose qu'un ajout de rôle, ou alors on demande à ce que les colonnes soient vides; il faudrait des tests correspondants (plusieurs utilisateurs, plusieurs lignes).

#10 Updated by Valentin Deniaud 9 months ago

comportement à adopter si on a des colonnes marquées update avec des ajouts de rôles sur plusieurs lignes
[...]
je serai pour l'interdire

Ce qui obligerait à créer deux fichiers si on a besoin de créer des utilisateurs avec plusieurs rôles. Il y a aussi potentiellement un obstacle technique, qui est qu'on découvrirait le problème au deuxième ajout de rôle pour un utilisateur, donc au final l'import sortirait des erreurs en ayant été à moitié exécuté.
À l'inverse, je trouve tout à fait cohérent de permettre des duplications de lignes quelque soit les colonnes (si une colonne d'ajout de rôle est présente) en marquant bien dans la doc « à part l'ajout de rôle, les valeurs des autres attributs seront ignorées dans les lignes supplémentaires pour un même utilisateur ». Ça peut être rendu clair dans le rendu avec les couleurs, en plus.
La raison c'est aussi que mon mode opératoire pour créer un tel fichier, mettons importer un utilisateur, ses attributs et deux rôles, ça serait d'écrire une première ligne avec tous les attributs et un premier rôle, et puis Vyp et je modifie juste la colonne rôle dans la ligne que je viens de dupliquer grâce au copain vim (et j'imagine que sous excel un agent procéderait pareil).
En fait j'ai peut-être simplement pas compris de quoi on voudrait se protéger avec cette interdiction ?

#11 Updated by Valentin Deniaud 9 months ago

38138

Voici ce que ça donne, sans interdiction pour le moment. J'ai réparé le clear + ajouté le test correspondant, et puis j'ai amélioré pas mal de trucs.
Screenshot en bonus pour appuyer que les lignes d'ajout multiple sont intelligibles.

#12 Updated by Valentin Deniaud 9 months ago

  • File deleted (0002-csv_import-allow-adding-roles-35773.patch)

#13 Updated by Valentin Deniaud 9 months ago

(erreur d'indentation qui mettait le boxon)

#14 Updated by Valentin Deniaud 9 months ago

Juste des modifs de style pour rendre le diff de #35774 plus sympa.

#15 Updated by Valentin Deniaud 9 months ago

  • Blocked by Bug #36832: import csv : certaines erreurs ne sont pas affichées added

#16 Updated by Valentin Deniaud 9 months ago

#17 Updated by Benjamin Dauvergne 9 months ago

  • Status changed from Solution proposée to Solution validée

#18 Updated by Valentin Deniaud 9 months ago

J'ai ajouté le paragraphe de doc qui va bien et les traductions, je sais pas si il y a besoin de relecture mais here it goes.

#19 Updated by Benjamin Dauvergne 9 months ago

  • Status changed from Solution proposée to En cours

Tes traductions change le chemin de tous les fichiers, il faut les faire depuis la racine du projet, sinon c'est nickel.

#20 Updated by Valentin Deniaud 9 months ago

Oups, je me disais bien qu'il avait l'air malade ce diff.

#21 Updated by Benjamin Dauvergne 9 months ago

  • Status changed from Solution proposée to Solution validée

Gogogo.

#22 Updated by Frédéric Péters 9 months ago

Gogogo

(vendredi)

#23 Updated by Valentin Deniaud 8 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit 7f6385853211c6accfc296540756b9f094add8de
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Mon Oct 21 17:34:03 2019 +0200

    update translations (#35773)

commit f12353d81cc07b51adb7579b853b2568e8c7bb70
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Wed Oct 9 15:29:24 2019 +0200

    csv_import: allow adding roles (#35773)

commit 64157da70c5f18c133f71c3245d204d33f0e7cf0
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Mon Oct 14 15:42:16 2019 +0200

    csv_import: make sure has_errors is toggled (#35773)

#24 Updated by Frédéric Péters 8 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF