Development #53726
remplacer get_role_translation par une méthode qui permette plusieurs rôles
0%
Description
On a sur un formdata une méthode get_role_translation qui permet de convertir une fonction en rôle, en regardant sur le formdata puis sur le formdef, et aussi si jamais le paramètre c'était déjà un rôle de le retourner aussi; ça sert à la base dans les workflows, on a genre un saut autorisé pour "xxx" qui est fonction ou rôle et on doit regarder si l'usager peut faire ce saut.
Ça s'appelle get_role_translation et le nom peut amener à confusion façon gettext et cie mais la motivation à y toucher est surtout que c'est particulièrement par cette méthode que s'impose la règle "1 fonction = 1 rôle".
Pour faire évoluer ça, pour par exemple permettre un jour l'attribution d'une fonction à plusieurs rôles, il faut donc passer par là.
Patch qui fait
- def get_role_translation(self, role_name): + def get_function_roles(self, role_name): + # receive a function name or role identifier and return a set of role identifiers
Et qui adapte tous les appelants, pour souvent applique cette forme :
- if self.formdata.get_role_translation(role) in user.get_roles(): + if self.formdata.get_function_roles(role).intersection(user.get_roles()):
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 3 ans
- Fichier 0001-misc-replace-get_role_translation-with-a-get_functio.patch 0001-misc-replace-get_role_translation-with-a-get_functio.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 2b6df5d5f86d8560b6b3eed9d32119e83233b761 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Apr 25 14:36:33 2021 +0200 misc: replace get_role_translation() with a get_function_roles() method (#53726) It removes the unobvious "_translation()" that has nothing to do with languages and returns a set() instead of a single role identifier; this may allow multiple roles filling a single function, at a later stage.
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: replace get_role_translation() with a get_function_roles() method (#53726)
It removes the unobvious "_translation()" that has nothing to do with
languages and returns a set() instead of a single role identifier; this
may allow multiple roles filling a single function, at a later stage.