Projet

Général

Profil

Development #10479

création d'une cellule "recherche d'un usager"

Ajouté par Thomas Noël il y a environ 8 ans. Mis à jour il y a presque 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
30 mars 2016
Echéance:
31 mars 2016
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision 835ff26e (diff)
Ajouté par Thomas Noël il y a environ 8 ans

general: add usersearch cell; used in get_concerned_user() (#10479)

Historique

#1

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.

#2

Mis à jour par Thomas Noël il y a environ 8 ans

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']
#3

Mis à jour par Thomas Noël il y a environ 8 ans

  • Description mis à jour (diff)
#4

Mis à jour par Thomas Noël il y a environ 8 ans

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.

#5

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... :/

#6

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.

#7

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) ?

#8

Mis à jour par Frédéric Péters il y a environ 8 ans

#10499 (posé sur dev.alfortville, d'ailleurs).

#9

Mis à jour par Thomas Noël il y a environ 8 ans

en attente de #10530

#10

Mis à jour par Thomas Noël il y a environ 8 ans

suite à #10530, le patch inclue une modification de get_concerned_usre

#11

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.

#12

Mis à jour par Thomas Noël il y a environ 8 ans

Tout à fait, voici, testé en vrai sur alfortville.dev, marche tout très bien.

#13

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):
#14

Mis à jour par Thomas Noël il y a environ 8 ans

Effectivement (et en même temps, le test de cell.page.is_visible pourrait être fait dans cell.is_visible(request.user) ?)

#15

Mis à jour par Frédéric Péters il y a environ 8 ans

go.

#16

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)

#17

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF