Development #10479
création d'une cellule "recherche d'un usager"
0%
Description
Cellule avec recherche d'un usager comme dans welco.
Une fois l'usager sélectionné, il est mis dans le contexte général sous le nom selected_user_uuid
Utilisation : des cellules sachant actuellement afficher un résultat pour un usager (selon son NameID) pourront alors être adaptées pour prendre en compte cet uuid "backoffice" ; on pourra alors construire une page "vue de l'utilisateur" dans un portail agent permettant d'afficher les informations liées à un utilisateur. Exemple: démarches en cours, compte médiathèque, dossier famille, etc.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ 8 ans
Détail mais je proposerais selected_user_uuid
pour le nom de la variable dans le contexte.
Mis à jour par Thomas Noël il y a environ 8 ans
- Fichier 0001-general-add-new-usersearch-cell-10479.patch 0001-general-add-new-usersearch-cell-10479.patch ajouté
- Statut changé de Nouveau à Information nécessaire
- Patch proposed changé de Non à Oui
Besoin d'un premier retour sur cette proposition.
Un soucis pour l'instant: après que l'agent cherche un utilisateur, on affiche une liste des comptes correspondant, l'agent clique alors sur le compte choisi, cela reload la page avec un ?selected_user_uuid=.... ce qui rend visible le uuid recherché.
Mais sinon ça marche bien, avec par exemple pour la cellule "formulaires de l'usager" ce simple patch :
--- a/combo/apps/wcs/models.py +++ b/combo/apps/wcs/models.py @@ -166,7 +166,9 @@ class WcsBlurpMixin(object): if wcs_site.get('orig') and wcs_site.get('secret'): url += '&orig=%s' % wcs_site['orig'] if context.get('user') and context['user'].is_authenticated(): - if context.get('request') and hasattr(context['request'], 'session') \ + if context.get('selected_user_uuid'): + url += '&NameID=' + urllib.quote(context['selected_user_uuid']) + elif context.get('request') and hasattr(context['request'], 'session') \ and context['request'].session.get('mellon_session'): mellon = context['request'].session['mellon_session'] nameid = mellon['name_id_content']
Mis à jour par Thomas Noël il y a environ 8 ans
- Fichier 0001-general-add-new-usersearch-cell-10479.patch 0001-general-add-new-usersearch-cell-10479.patch ajouté
- Echéance mis à 31 mars 2016
- Statut changé de Information nécessaire à En cours
Voici une version simplifiée qui ne fait qu'une «bête» recherche dans les utilisateur locaux du combo, et pose un selected_user dans le contexte.
Quand on veut qu'une cellule se base sur le selected_user, on peut avoir ce genre de chose :
# le if suivant indique que ça marche en front ou en backoffice : if getattr(self.context.get('request'), 'session', {}).get('mellon_session') \ or self.context.get('selected_user'): if self.context.get('selected_user'): # cas en backoffice sur une cellule "User Search" from mellon.models import UserSAMLIdentifier name_id = UserSAMLIdentifier.objects.get(user=self.context['selected_user']).name_id else: # sinon cas habituel name_id = self.context['request'].session['mellon_session'].get('name_id_content')
Ce bout de code gagnerait d'ailleurs à être factorisé dans un combo.utils.get_name_id_from_context(context)
Et ça marche très bien ainsi.
À vous.
Mis à jour par Thomas Noël il y a environ 8 ans
C'est posé pour essayer ici : https://portail-agent-alfortville.dev.entrouvert.org/agora/
Un utilisateur relié est "tototest"
Je n'explique pas encore la disparition du menu latéral gauche... :/
Mis à jour par Frédéric Péters il y a environ 8 ans
Thomas Noël a écrit :
Je n'explique pas encore la disparition du menu latéral gauche... :/
gadjo.js est chargé deux fois, une fois par le thème puis une fois ajouté par la cellule famille.
Mis à jour par Thomas Noël il y a environ 8 ans
Ah, oui, bien vu... La solution c'est #10499 ou bien on pourrait faire quelque chose dans la cellule famille (je vois pas trop, pour ce dernier point) ?
Mis à jour par Frédéric Péters il y a environ 8 ans
#10499 (posé sur dev.alfortville, d'ailleurs).
Mis à jour par Thomas Noël il y a environ 8 ans
- Fichier 0001-general-add-usersearch-cell-used-in-get_concerned_us.patch 0001-general-add-usersearch-cell-used-in-get_concerned_us.patch ajouté
suite à #10530, le patch inclue une modification de get_concerned_usre
Mis à jour par Frédéric Péters il y a environ 8 ans
Il faudrait arriver à ce que ajax_usersearch
ne retourne rien si l'usager n'a pas la permission de voir une seule des cellules UserSearchCell du site.
Mis à jour par Thomas Noël il y a environ 8 ans
- Fichier 0001-general-add-usersearch-cell-used-in-get_concerned_us.patch 0001-general-add-usersearch-cell-used-in-get_concerned_us.patch ajouté
Tout à fait, voici, testé en vrai sur alfortville.dev, marche tout très bien.
Mis à jour par Frédéric Péters il y a environ 8 ans
Il faut aussi vérifier que la cellule est posée sur une page qui est visible à l'usager, a priori :
if cell.is_visible(request.user) and cell.page.is_visible(request.user):
Mis à jour par Thomas Noël il y a environ 8 ans
- Fichier 0001-general-add-usersearch-cell-used-in-get_concerned_us.patch 0001-general-add-usersearch-cell-used-in-get_concerned_us.patch ajouté
Effectivement (et en même temps, le test de cell.page.is_visible pourrait être fait dans cell.is_visible(request.user) ?)
Mis à jour par Thomas Noël il y a environ 8 ans
- Statut changé de En cours à Résolu (à déployer)
commit 835ff26e9fd5272d1334f3fc989f999269fbc61c Author: Thomas NOEL <tnoel@entrouvert.com> Date: Wed Mar 30 14:45:16 2016 +0200 general: add usersearch cell; used in get_concerned_user() (#10479)
Mis à jour par Frédéric Péters il y a presque 8 ans
- Statut changé de Résolu (à déployer) à Fermé
general: add usersearch cell; used in get_concerned_user() (#10479)