Project

General

Profile

Actions

Documentation #112889

open

Documenter les usages de l'utilisateur dans combo

Added by Mikaël Ates about 2 months ago. Updated about 2 months ago.

Status:
Nouveau
Priority:
Normal
Category:
Gestion de contenu et thème (Combo)
Target version:
-
Start date:
11 December 2025
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No
Club:
No

Description

user : Alexandre S
request.user : Alexandre S
user|pprint : <SimpleLazyObject: <User: Alexandre S>>
request.user|pprint : <SimpleLazyObject: <User: Alexandre S>>
user.email : *****@entrouvert.org
request.user.email : *****@entrouvert.org
user.nameid : 4bc63712305ca4b85fe73c6cc575
request.user.nameid : 4bc63712305ca4b85fe73c6cc575
user.fields : 
user.attributes : {'id': 4, 'ou': 'default', 'city': '', 'uuid': '4bc63712305ca4b85fe73c6cc575', 'email': '*****@entrouvert.org', 'phone': '', 'title': 'Madame', 'mobile': '', 'address': '', 'zipcode': '', 'is_staff': True, 'modified': '2025-12-04T09:08:56.625419+01:00', 'username': '*****@entrouvert.com', 'birthdate': None, 'full_name': 'Alexandre S', 'is_active': True, 'last_name': 'S', 'first_name': 'Alexandre', 'last_login': '2025-12-04T08:39:03.735505+01:00', 'date_joined': '2021-01-27T11:16:58.704221+01:00', 'deactivation': None, 'is_superuser': True, 'city_verified': False, 'email_verified': False, 'phone_verified': False, 'title_verified': False, 'mobile_verified': False, 'address_verified': False, 'nom_de_naissance': '', 'zipcode_verified': False, 'lieu_de_naissance': '', 'numero_de_licence': '123456789', 'phone_verified_on': None, 'birthdate_verified': False, 'last_name_verified': False, 'numero_sur_la_voie': '', 'complement_dadresse': '', 'deactivation_reason': None, 'email_verified_date': None, 'first_name_verified': False, 'email_verified_sources': [], 'nom_de_naissance_verified': False, 'lieu_de_naissance_verified': False, 'numero_de_licence_verified': False, 'last_account_deletion_alert': None, 'numero_sur_la_voie_verified': False, 'complement_dadresse_verified': False}
user.attributes.data : 
user.extra_attributes : UserExtraAttributes object (11)
user.extra_attributes.data : {'id': 4, 'ou': 'default', 'city': '', 'uuid': '4bc63712305ca4b85fe73c6cc575', 'email': '*****@entrouvert.org', 'phone': '', 'title': 'Madame', 'mobile': '', 'address': '', 'zipcode': '', 'is_staff': True, 'modified': '2025-12-04T09:08:56.625419+01:00', 'username': '*****@entrouvert.com', 'birthdate': None, 'full_name': 'Alexandre S', 'is_active': True, 'last_name': 'S', 'first_name': 'Alexandre', 'last_login': '2025-12-04T08:39:03.735505+01:00', 'date_joined': '2021-01-27T11:16:58.704221+01:00', 'deactivation': None, 'is_superuser': True, 'city_verified': False, 'email_verified': False, 'phone_verified': False, 'title_verified': False, 'mobile_verified': False, 'address_verified': False, 'nom_de_naissance': '', 'zipcode_verified': False, 'lieu_de_naissance': '', 'numero_de_licence': '123456789', 'phone_verified_on': None, 'birthdate_verified': False, 'last_name_verified': False, 'numero_sur_la_voie': '', 'complement_dadresse': '', 'deactivation_reason': None, 'email_verified_date': None, 'first_name_verified': False, 'email_verified_sources': [], 'nom_de_naissance_verified': False, 'lieu_de_naissance_verified': False, 'numero_de_licence_verified': False, 'last_account_deletion_alert': None, 'numero_sur_la_voie_verified': False, 'complement_dadresse_verified': False}
user.numero_de_licence : 
user.extra_attributes.data.numero_de_licence : 123456789
user.attributes.numero_de_licence : 123456789

user paraît équivalent à request.user.
Dans la documentation, par exemple https://doc-publik.entrouvert.com/admin-fonctionnel/developper-des-applications-simples-avec/parametrage-avance-des-fiches/, on trouve des {{ cards|objects:"enfant"|filter_by_user:request.user|first|get:"id"}} qui pourraient par exemple être simplifiés.

filter_by_user peut s'utiliser avec user.
Filtre documenté sur https://doc-publik.entrouvert.com/admin-fonctionnel/parametrage-avance/utiliser-les-filtres-de-requete/#filtres-supplementaires mais uniquement avec form_user (donc dans wcs).
https://doc-publik.entrouvert.com/admin-fonctionnel/parametrage-avance/utiliser-les-filtres-de-requete/#utilisation-des-filtres-de-requete-dans-combo pour les spécificités des filtres dans combo où on pourrait indiquer form_user -> user, même si le sujet est plus vaste que cette simple précision.

Les attributs supplémentaires.
user.attributes semblent être un alias de user.extra_attributes.data et on pourrait donc documenter l'usage de user.attributes, par exemple {{ user.attributes.mon_attribut_supplementaire_du_profil }}.

Actions #1

Updated by Mikaël Ates about 2 months ago

  • Subject changed from Documenter les usagers de l'utilisateur dans combo to Documenter les usages de l'utilisateur dans combo
Actions #2

Updated by Paul Marillonnet about 2 months ago

Mikaël Ates a écrit :

[...]

user paraît équivalent à request.user.

Attention, c’est quelque chose de géré par Django directement¹ et ça n’est pas strictement équivalent : dans le cas où l’usager n’est pas authentifié, contrairement à {{ request.user }}, dans {{ user }} on aura bien un objet initialisé (de la classe AnonymousUser). J’ai souvenir d’avoir vu des tests d’existence de {{ request.user }}, dans des proto JSON par exemple, pour savoir si l’usager est connecté. Pour ces tests par exemple, cette même syntaxe avec {{ user }} pourrait ne pas fonctionner.

user.attributes semblent être un alias de user.extra_attributes.data et on pourrait donc documenter l'usage de user.attributes, par exemple {{ user.attributes.mon_attribut_supplementaire_du_profil }}.

C’est quelque chose de placé dans hobo spécifiquement pour la personnalisation du nom complet de l’usager au travers des briques (#72945), je dirais que le fait que, dans combo, ça équivaut à user.extra_attributes.data est incidental (d’ailleurs l’équivalence n’est pas stricte, à lire le code en diagonale je vois qu’il y a du cache sur user.attributes), je ne suis pas sûr que cela puisse être documenté officiellement comme tel :/

1. https://github.com/django/django/blob/stable/4.2.x/django/contrib/auth/context_processors.py#L57

Actions #3

Updated by Benjamin Dauvergne about 2 months ago

Disons qu'on pourrait documenter que:

{% if request.user %}....{% endif %}

est déprécié et équivalent à:
{% if user.is_authenticated %}Hello, {{ user.username }}.{% endif %}

Le souci pourrait être que w.c.s. ne se comporte pas comme dans django.contrib.auth.context_processors.auth user vaut None où un utilisateur authentifié (https://git.entrouvert.org/entrouvert/wcs/src/commit/7b64d9fc729377fabc11a7b5475c04cd95f031da/wcs/context_processors.py#L43) mais si user vaut None je pense que {% if user.is_authenticated %} est bien faux comme on voudrait, donc ça devrait marcher (et wcs.users.User implémente bien is_authenticated).

Actions

Also available in: Atom PDF