Development #23306
À l'ajout d'un champ de profil permettre d'en choisir le type
0%
Description
Pour le moment on les crée nécessairement avec kind = string, on voudrait par exemple créer un "acceptation des CGU" avec kind = boolean.
(uniquement à la création, ne pas permettre la modification après coup)
Fichiers
Révisions associées
Historique
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-allow-string-or-boolean-kind-for-attribute-definitio.patch 0001-allow-string-or-boolean-kind-for-attribute-definitio.patch ajouté
- Patch proposed changé de Non à Oui
Très simple.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
En fait non, en bossant sur #23309, je me rends compte que mettre le choix string/boolean au niveau du modèle ne convient pas, car ensuite lors d'un 'makemigrations' django veut me faire descendre ce choix jusque dans la db, ce qu'on ne veut pas j'imagine puisque sur une instance toute neuve je vois des attributs de kind
title
, birthdate
.
Donc je vais remonter ça au niveau du formulaire.
Mis à jour par Frédéric Péters il y a presque 6 ans
Ou également autoriser birthdate au niveau du modèle ?
Mis à jour par Frédéric Péters il y a presque 6 ans
- Statut changé de Nouveau à En cours
Même pas, je viens de vérifier, c'est totalement indicatif, on peut tourner avec choices=[...] et faire un .kind = 'whatever' et enregistrer et l'objet sera bien enregistré.
Ma position du coup ici est de simplement modifier la migration initiale 0001 pour y déclarer le choices=[...]
+++ b/hobo/profile/migrations/0001_initial.py @@ -21,7 +21,8 @@ class Migration(migrations.Migration): ('asked_on_registration', models.BooleanField(default=False, verbose_name='asked on registration')), ('user_editable', models.BooleanField(default=True, verbose_name='user editable')), ('user_visible', models.BooleanField(default=True, verbose_name='user visible')), - ('kind', models.CharField(default=b'string', max_length=16, verbose_name='kind')), + ('kind', models.CharField(default=b'string', max_length=16, verbose_name='kind', + choices=[(b'string', 'String'), (b'boolean', 'Boolean')])), ('disabled', models.BooleanField(default=False, verbose_name='disabled')), ('order', models.PositiveIntegerField()), ('last_update_timestamp', models.DateTimeField(auto_now=True)),
Et c'est tout. (ou presque, on remarquera que j'ai ajouté des majuscules à String et Boolean, je préfère).
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-allow-string-or-boolean-kind-for-attribute-definitio.patch 0001-allow-string-or-boolean-kind-for-attribute-definitio.patch ajouté
Et c'est tout.
Pas sûr de la portée de ce commentaire, j'ai fait ce qui me parait raisonnable, modification de la migration initiale et du models.py.
Mis à jour par Frédéric Péters il y a presque 6 ans
Ok, peut-être encore encore en plus, même si ça ne révélera rien, ajouter un test qui crée un AttributeDefinition avec un kind différent, pour vérifier que ça s'enregistre bien.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-allow-string-or-boolean-kind-for-attribute-definitio.patch 0001-allow-string-or-boolean-kind-for-attribute-definitio.patch ajouté
J'aime pytest.
Mis à jour par Frédéric Péters il y a presque 6 ans
Ok, peut-être encore encore en plus, même si ça ne révélera rien, ajouter un test qui crée un AttributeDefinition avec un kind différent, pour vérifier que ça s'enregistre bien.
Ce n'était pas clair; je voulais dire "un kind différent, pas repris dans le choices=[...]", ce qui assurerait (bien qu'on le sache) que ces choix sont juste là à titre indicatif, utile pour la construction du formulaire, et c'est tout.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-allow-string-or-boolean-kind-for-attribute-definitio.patch 0001-allow-string-or-boolean-kind-for-attribute-definitio.patch ajouté
On va y arriver.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Statut changé de En cours à Résolu (à déployer)
commit c336821d54947a576bef68b53c8439aad12a912d Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Mon Jun 4 16:46:07 2018 +0200 allow string or boolean kind for attribute definition (#23306)
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
allow string or boolean kind for attribute definition (#23306)