univ-avignon: use preferred username in front-end when available #46

Merged
aberriot merged 1 commits from wip/70628-user-name into main 2022-11-30 16:32:13 +01:00
Owner

Voilà, je découvre au passage qu'on a aucun moyen propre d'accéder aux attributs du profil usager dans combo, ce qui oblige à utiliser les données de session de django_mellon. C'est pas génial, ça oblige notamment à ce déconnecter/reconnecter après un changement de nom d'usage pour que le changement soit réperctuté mais a priori on n peut pas faire mieux.

image

Voilà, je découvre au passage qu'on a aucun moyen propre d'accéder aux attributs du profil usager dans combo, ce qui oblige à utiliser les données de session de django_mellon. C'est pas génial, ça oblige notamment à ce déconnecter/reconnecter après un changement de nom d'usage pour que le changement soit réperctuté mais a priori on n peut pas faire mieux. ![image](/attachments/fefcad20-ccfd-4d3f-a7ca-e8e88e1c8b58)
180 KiB
Author
Owner

Cf #70628

Cf #70628
fpeters reviewed 2022-11-29 17:23:51 +01:00
@ -0,0 +1,3 @@
{% with preferred_username=request.session.mellon_session.preferred_username.0 %}
{{ user.first_name }} {% if preferred_username %}{{ preferred_username }}{% else %}{{ user.last_name }}{% endif %}
{% endwith %}
Owner

Ça reste ok côté wcs ?

J'ai peur que non, que tu n'aies pas request.session.mellon_session dedans; et donc

{% if request.session.mellon_session %}(ce que tu as là){% else %}{{user.get_full_name}}{% endif %}
Ça reste ok côté wcs ? J'ai peur que non, que tu n'aies pas request.session.mellon_session dedans; et donc ``` {% if request.session.mellon_session %}(ce que tu as là){% else %}{{user.get_full_name}}{% endif %} ```
Owner

Aussi, moins verbeux dans le {% with %}; {% firstof preferred_username user.last_name %} doit être ok.

Aussi, moins verbeux dans le `{% with %}`; `{% firstof preferred_username user.last_name %}` doit être ok.
Author
Owner

Effectivement, ça ne marche pas sur une page WCS. j'ai rajouté une condition comme tu le suggères (cf dernier commit), seulement je n'arrive pas à tester en local, je pense que je ne configure pas le gabarit correctement, j'ai bien mis {{user_var_first_name|default:""}} {% if user_var_preferred_username %}{{user_var_preferred_username|default:""}}{% else %}{{user_var_last_name|default:""}}{% endif %} dans /backoffice/settings/users/fields/, mais j'ai l'impression que user_var_preferred_username n'est pas défini et je ne sais pas où/comment le définir.

image

Effectivement, ça ne marche pas sur une page WCS. j'ai rajouté une condition comme tu le suggères (cf dernier commit), seulement je n'arrive pas à tester en local, je pense que je ne configure pas le gabarit correctement, j'ai bien mis `{{user_var_first_name|default:""}} {% if user_var_preferred_username %}{{user_var_preferred_username|default:""}}{% else %}{{user_var_last_name|default:""}}{% endif %}` dans `/backoffice/settings/users/fields/`, mais j'ai l'impression que `user_var_preferred_username` n'est pas défini et je ne sais pas où/comment le définir. ![image](/attachments/2ca6e457-dcb5-416e-9b44-fdaa00c8f6a8)
Owner

Je ne sais pas comment preferred_username est défini de ton côté; je me dis que peut-être directement dans authentic ? si c'est le cas ça vient de là, pour les attributs de profil il faut passer par hobo (/profile/), qui s'assurera que c'est ok aussi côté wcs.

Je ne sais pas comment preferred_username est défini de ton côté; je me dis que peut-être directement dans authentic ? si c'est le cas ça vient de là, pour les attributs de profil il faut passer par hobo (/profile/), qui s'assurera que c'est ok aussi côté wcs.
Author
Owner

C'est bien ça, j'ai un champ preferred_username défini dans le profil usager sur hobo. Pour une raison que j'ignore, ça n'a pas l'air d'être répércuté ici :x

C'est bien ça, j'ai un champ `preferred_username` défini dans le profil usager sur hobo. Pour une raison que j'ignore, ça n'a pas l'air d'être répércuté ici :x
Owner

Si tu veux vérifier en local, tu as l'URL https://demarches-univ-avignon.test.entrouvert.org/backoffice/settings/users/fields/ qui permet de voir comment le profil est défini en local.

Aussi tu as https://demarches-univ-avignon.test.entrouvert.org/backoffice/users/ pour aller vérifier sur tes utilisateurs que les attributs sont bien provisionnés.

Si tu veux vérifier en local, tu as l'URL https://demarches-univ-avignon.test.entrouvert.org/backoffice/settings/users/fields/ qui permet de voir comment le profil est défini en local. Aussi tu as https://demarches-univ-avignon.test.entrouvert.org/backoffice/users/ pour aller vérifier sur tes utilisateurs que les attributs sont bien provisionnés.
Author
Owner

sur avignon

image

en local

image

Est-ce que tu sais comment je peux rajouter ce champ dans la liste ? Mes essais avec le formulaire à droite sont infructueux. Pourtant c'est bien disponible dans le profil usager sur hobo

image

Et y'a bien une valeur définie pour mon user, vu que ça marche ailleurs que dans WCS.

sur avignon ![image](/attachments/8f3033e7-edbc-4872-8a01-61b90d25124e) en local ![image](/attachments/11f446f2-7ae2-4d76-92e9-6dbd1e9b6e46) Est-ce que tu sais comment je peux rajouter ce champ dans la liste ? Mes essais avec le formulaire à droite sont infructueux. Pourtant c'est bien disponible dans le profil usager sur hobo ![image](/attachments/ff6a2859-fe71-45c6-b327-75702d078be1) Et y'a bien une valeur définie pour mon user, vu que ça marche ailleurs que dans WCS.
Owner

Ces liens image ne s'affichent pas chez moi (donnent des 404).

En devinant ce qu'il y a dedans j'imagine qu'il y a un problème de provisionning des services, idéalement c'était juste temporaire et tu pourrais juste faire une modification bidon côté hobo et ça réglerait le tout. Si ça persiste, il y aura à creuser les logs rabbitmq/hobo-agent.

Ces liens image ne s'affichent pas chez moi (donnent des 404). En devinant ce qu'il y a dedans j'imagine qu'il y a un problème de provisionning des services, idéalement c'était juste temporaire et tu pourrais juste faire une modification bidon côté hobo et ça réglerait le tout. Si ça persiste, il y aura à creuser les logs rabbitmq/hobo-agent.
Author
Owner
$ tail /var/log/hobo-agent/stderr.log -n 200

RuntimeError: command "/home/agate/envs/publik-env-py3/bin/wcsctl.py -f /home/agate/.config/publik/settings/wcs/wcs.cfg hobo_deploy https://wcs.dev.publik.love/ -" failed: b'' b'Traceback (most recent call last):\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 573, in _build_master\n    ws.require(__requires__)\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 891, in require\n    needed = self.resolve(parse_requirements(requirements))\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 782, in resolve\n    raise VersionConflict(dist, req).with_context(dependent_req)\npkg_resources.VersionConflict: (wcs 8.45.post5+g58e26caff.dirty (/home/agate/projects/entrouvert/wcs), Requirement.parse(\'wcs==8.45.post5+g58e26caff\'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "/home/agate/envs/publik-env-py3/bin/wcsctl.py", line 4, in <module>\n    __import__(\'pkg_resources\').require(\'wcs==8.45.post5+g58e26caff\')\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3267, in <module>\n    def _initialize_master_working_set():\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3241, in _call_aside\n    f(*args, **kwargs)\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3279, in _initialize_master_working_set\n    working_set = WorkingSet._build_master()\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 575, in _build_master\n    return cls._build_from_requirements(__requires__)\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 588, in _build_from_requirements\n    dists = ws.resolve(reqs, Environment())\n  File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 777, in resolve\n    raise DistributionNotFound(req, requirers)\npkg_resources.DistributionNotFound: The \'wcs==8.45.post5+g58e26caff\' distribution was not found and is required by the application\n'

Je suis incapable de débugger ça :/

``` $ tail /var/log/hobo-agent/stderr.log -n 200 RuntimeError: command "/home/agate/envs/publik-env-py3/bin/wcsctl.py -f /home/agate/.config/publik/settings/wcs/wcs.cfg hobo_deploy https://wcs.dev.publik.love/ -" failed: b'' b'Traceback (most recent call last):\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 573, in _build_master\n ws.require(__requires__)\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 891, in require\n needed = self.resolve(parse_requirements(requirements))\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 782, in resolve\n raise VersionConflict(dist, req).with_context(dependent_req)\npkg_resources.VersionConflict: (wcs 8.45.post5+g58e26caff.dirty (/home/agate/projects/entrouvert/wcs), Requirement.parse(\'wcs==8.45.post5+g58e26caff\'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "/home/agate/envs/publik-env-py3/bin/wcsctl.py", line 4, in <module>\n __import__(\'pkg_resources\').require(\'wcs==8.45.post5+g58e26caff\')\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3267, in <module>\n def _initialize_master_working_set():\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3241, in _call_aside\n f(*args, **kwargs)\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3279, in _initialize_master_working_set\n working_set = WorkingSet._build_master()\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 575, in _build_master\n return cls._build_from_requirements(__requires__)\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 588, in _build_from_requirements\n dists = ws.resolve(reqs, Environment())\n File "/home/agate/envs/publik-env-py3/lib/python3.10/site-packages/pkg_resources/__init__.py", line 777, in resolve\n raise DistributionNotFound(req, requirers)\npkg_resources.DistributionNotFound: The \'wcs==8.45.post5+g58e26caff\' distribution was not found and is required by the application\n' ``` Je suis incapable de débugger ça :/
Owner
(pas mieux, https://dev.entrouvert.org/issues/71878)
Author
Owner

merci pour l'ouverture du ticket @fpeters

merci pour l'ouverture du ticket @fpeters
Author
Owner

Dernière version du code avec ta suggestion pour le firstof et testé localement sur combo et wcs avec succès.

Par contre ça ne marche pas sur les pages authentic :/

Dernière version du code avec ta suggestion pour le firstof et testé localement sur combo et wcs avec succès. Par contre ça ne marche pas sur les pages authentic :/
Owner

Ah oui, vu qu'on n'a pas de session mellon là, il va falloir une troisième variation :/

Je pense que ça pourrait être ok avec :

{% elif user.attributes %}
  {{ user.first_name }} {% firstof user.attributes.preferred_username user.last_name %}
Ah oui, vu qu'on n'a pas de session mellon là, il va falloir une troisième variation :/ Je pense que ça pourrait être ok avec : ``` {% elif user.attributes %} {{ user.first_name }} {% firstof user.attributes.preferred_username user.last_name %} ```
Author
Owner

Ça fonctionne au poil sur authentic avec ce code. Est-ce que j'oublie autre chose ou est-ce qu'on couvre tous les cas pour cet endroit ?

Ça fonctionne au poil sur authentic avec ce code. Est-ce que j'oublie autre chose ou est-ce qu'on couvre tous les cas pour cet endroit ?
Owner

Cette fois je pense on couvre tout.

Cette fois je pense on couvre tout.
fpeters marked this conversation as resolved
aberriot force-pushed wip/70628-user-name from 0c369eb3a7 to 457039dd04 2022-11-29 17:30:22 +01:00 Compare
aberriot force-pushed wip/70628-user-name from 457039dd04 to b0f391570d 2022-11-30 14:59:23 +01:00 Compare
aberriot force-pushed wip/70628-user-name from b0f391570d to d3effedc21 2022-11-30 16:14:41 +01:00 Compare
aberriot merged commit 749f5554c9 into main 2022-11-30 16:32:13 +01:00
aberriot deleted branch wip/70628-user-name 2022-11-30 16:32:13 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/publik-base-theme#46
No description provided.