Projet

Général

Profil

Development #25468

django 1.11 création automatique d'un username

Ajouté par Emmanuel Cazenave il y a presque 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
24 juillet 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:

Description

Du changement en 1.11 : https://code.djangoproject.com/ticket/26719 avec en particulier https://github.com/django/django/commit/39805686b364358af725b695924a5a6dfa7f5302#diff-0525989eb70bcc9e943110ba53a6dad6R76

Lors de la création d'un utilisateur, un username est automatiquement crée même si pas de username dans le formulaire, et du coup ce test échoue par exemple : http://git.entrouvert.org/authentic.git/tree/tests/test_registration.py#n63 (username est égal à testbot@entrouvert.com d'entrée de jeu)

Pour l'impact fonctionnel je ne mesure pas : est-ce qu'on veut maintenir l'ancien comportement ? On s'en moque ?


Demandes liées

Lié à Authentic 2 - Development #21489: Fonctionner avec Django 1.11 (et 1.8)Fermé06 avril 2018

Actions

Révisions associées

Révision 0de3c582 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: avoid premature username creation (#25468) (#21489)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

#2

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

  • Tracker changé de Support à Development
#3

Mis à jour par Benjamin Dauvergne il y a presque 6 ans

Je propose de simplement overrider clean() et de ne pas appeler super().clean() et d'adapter éventuellement le traitement en ajoutant un if self.username: puisque chez nous le champ n'est pas obligatoire (je ne sais pas exactement ce que ça fait).

Et oui j'aimerai bien que username soit égal à None et pas "None" puisque j'ai l'impression que c'est ça qui se passe maintenant avec dj111, c'est bien cela ?

#4

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Et oui j'aimerai bien que username soit égal à None et pas "None" puisque j'ai l'impression que c'est ça qui se passe maintenant avec dj111, c'est bien cela ?

Non, username égal testbot@entrouvert.com.

#5

Mis à jour par Benjamin Dauvergne il y a presque 6 ans

Emmanuel Cazenave a écrit :

Et oui j'aimerai bien que username soit égal à None et pas "None" puisque j'ai l'impression que c'est ça qui se passe maintenant avec dj111, c'est bien cela ?

Non, username égal testbot@entrouvert.com.

Et d'où sort cette copie de l'email dans le username ? Je ne vois rien de tel dans le commit Django que tu pointes.

#6

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Dans le commit il y a :

def clean(self):
+        setattr(self, self.USERNAME_FIELD, self.normalize_username(self.get_username()))

Et dans src/authentic2/custom_user/models.py::User :

def get_username(self):
    "Return the identifying username for this User" 
     return self.username or self.email or self.get_full_name() or self.uuid

#7

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Et donc dans le test que je pointais l'utilisateur est crée avec un seul champ définis (parmi ceux utilisés par get_username) : email.

#8

Mis à jour par Benjamin Dauvergne il y a presque 6 ans

Et voilà c'est ma faute :) Je reste sur ma suggestion, ré-implémenter clean() comme on a envie qu'il fonctionne, de toute façon on converge vers le fait d'abandonner complètement django.contrib.auth à force.

#9

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Information nécessaire à Résolu (à déployer)

Ça s'est trouvé dans la branche django 1.11.

commit 0de3c582090e0f6214d4ecafd53821f600a80615
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Wed Aug 1 16:10:57 2018 +0200

    django 1.11: avoid premature username creation (#25468) (#21489)
#10

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

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

Formats disponibles : Atom PDF