Bug #13330
Il manque un équivalent à Attribute.user_visible comme A2_PROFILE_FIELDS est équivalent à Attribute.user_editable
0%
Description
- si Attribute.user_visible est à True on affiche le champ dans le profil quelque soit la valeurs des variables
A2_*_FIELDS
- si A2_VISIBLE_FIELDS est disponible, il définit la disposition des champs du profil en lieu et place de A2_PROFILE_FIELDS qui ne sert plus qu'au formulaire d'édition
Fichiers
Révisions associées
Historique
Mis à jour par Thomas Noël il y a plus de 7 ans
Dans le code actuel, A2_PROFILE_FIELDS donne la liste à afficher et à modifier, et ça surpasse tout ce qui peut être raconté via user_editable ou user_visible, qui ne sont pas pris en compte pour définir l'affichage ou le formulaire.
Je proposerai bien de ne pas changer ce principe des "settings qui décident", mais de rajouter deux settings : A2_USER_VISIBLE_PROFILE_FIELDS et A2_USER_EDITABLE_PROFILE_FIELDS qui surpasseraient A2_PROFILE_FIELDS. Et si rien n'existe, on se base sur les user_visible/user_editable (c-a-d qu'on laisse en place le principe actuel).
C'est peut-être un peu plus lourd, mais ça me semble moins magique et ça casserait rien ?
(restera alors dans les settings_loader de hobo à gérer ces deux nouveaux settings)
genre :
diff --git a/src/authentic2/app_settings.py b/src/authentic2/app_settings.py index 38e62e1..908563e 100644 --- a/src/authentic2/app_settings.py +++ b/src/authentic2/app_settings.py @@ -120,6 +120,8 @@ default_settings = dict( A2_PROFILE_FIELDS=Setting(default=(), definition='Fields to show to the user in the profile page'), + A2_VISIBLE_PROFILE_FIELDS=Setting(default=(), definition='Fields to show to the user in the profile page'), + A2_EDITABLE_PROFILE_FIELDS=Setting(default=(), definition='Fields to show to the user in the profile edit page'), A2_REGISTRATION_FIELDS=Setting(default=(), definition='Fields from the user model that must appear on the registration form'), diff --git a/src/authentic2/views.py b/src/authentic2/views.py index 08dc8f6..a9169f8 100644 --- a/src/authentic2/views.py +++ b/src/authentic2/views.py @@ -80,7 +80,7 @@ class EditProfile(cbv.TemplateNamesMixin, UpdateView): def get_fields(cls): default_fields = list(models.Attribute.objects.filter(user_editable=True).values_list('name', flat=True)) return utils.get_fields_and_labels( - app_settings.A2_PROFILE_FIELDS, + app_settings.A2_EDITABLE_PROFILE_FIELDS or app_settings.A2_PROFILE_FIELDS, default_fields) @@ -356,7 +356,7 @@ class ProfileView(cbv.TemplateNamesMixin, TemplateView): # User attributes management profile = [] - field_names = app_settings.A2_PROFILE_FIELDS + field_names = app_settings.A2_VISIBLE_PROFILE_FIELDS or app_settings.A2_PROFILE_FIELDS if not field_names:
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
A2_*_FIELDS
c'est que le modèle Attribute ne permet pas deux choses:
- changer l'ordre des champs en fonction du contexte
- changer le label du champ en fonction du contexte
Pour moi un champ doit être utilisé si le flag Attribute.flag du champ en question est vrai, c'est tout. Les A2_*_FIELDS
ne doivent servir qu'à en changer l'ordre ou le label.
Mis à jour par Thomas Noël il y a plus de 7 ans
« Les A2_*_FIELDS ne doivent servir qu'à en changer l'ordre ou le label. »
Ca me va bien ; et dans ce cas, on peut rester sur le simple A2_PROFILE_FIELDS mais :- dans EditProfile, retirer les attributs qui n'ont pas user_editable
- dans ProfileView, retirer ceux qui n'ont pas user_visible
Mis à jour par Thomas Noël il y a plus de 7 ans
- Fichier 0001-remove-non-editables-fields-from-EditProfile-view-13.patch 0001-remove-non-editables-fields-from-EditProfile-view-13.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a plus de 7 ans
- Statut changé de En cours à Résolu (à déployer)
commit fa9a9b22c1f90012b03b9e8998e5c7fead1135db Author: Thomas NOEL <tnoel@entrouvert.com> Date: Tue Sep 27 14:07:42 2016 +0200 remove non-editables fields from EditProfile view (#13330)
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Statut changé de Résolu (à déployer) à Fermé
remove non-editables fields from EditProfile view (#13330)