From 85d5c4f980dd593a61b55e2833fcb1a41fe3744c Mon Sep 17 00:00:00 2001 From: Yoann Pietri Date: Sun, 15 Jul 2018 17:53:14 +0200 Subject: [PATCH] =?UTF-8?q?Mot=20de=20passe=20=C3=A0=20l'inscription?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- users/forms.py | 26 +++++++++++++++++++++----- users/models.py | 2 +- users/views.py | 12 +++++++++--- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/users/forms.py b/users/forms.py index 670fbb98..e79062b4 100644 --- a/users/forms.py +++ b/users/forms.py @@ -295,6 +295,14 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm): """Formulaire de base d'edition d'un user. Formulaire de base, utilisé pour l'edition de self par self ou un cableur. On formate les champs avec des label plus jolis""" + + password1 = forms.CharField(widget=forms.PasswordInput, required=False) + password2 = forms.CharField(widget=forms.PasswordInput, required=False) + force = forms.BooleanField( + label="Forcer le déménagement ?", + initial=False, + required=False + ) def __init__(self, *args, **kwargs): prefix = kwargs.pop('prefix', self.Meta.model.__name__) super(AdherentForm, self).__init__(*args, prefix=prefix, **kwargs) @@ -305,6 +313,9 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm): self.fields['room'].label = 'Chambre' self.fields['room'].empty_label = "Pas de chambre" self.fields['school'].empty_label = "Séléctionner un établissement" + self.fields['password1'].label = 'Mot de passe' + self.fields['password2'].label = 'Mot de passe (répétez)' + self.fields['password2'].help_text = 'Laisser les champs mot de passe vide pour envoyer un mail d\'initialisation' class Meta: model = Adherent @@ -330,11 +341,16 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm): ) return telephone - force = forms.BooleanField( - label="Forcer le déménagement ?", - initial=False, - required=False - ) + def clean_password2(self): + """Vérifie si les mots de passe sont identiques""" + password1 = self.cleaned_data['password1'] + password2 = self.cleaned_data['password2'] + if(password1 != password2): + raise forms.ValidationError( + "Les mots de passe sont différents" + ) + return password2 + def clean_force(self): """On supprime l'ancien user de la chambre si et seulement si la diff --git a/users/models.py b/users/models.py index 58250ed2..378f6a5e 100644 --- a/users/models.py +++ b/users/models.py @@ -414,7 +414,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser, def has_access(self): """ Renvoie si un utilisateur a accès à internet """ - if(OptionalUser.get_cached_value('mail_verification') and not self.verified and self.verification_deadline is not None and datetime.now() > self.verification_deadline): + if(OptionalUser.get_cached_value('mail_verification') and not self.verified and self.verification_deadline is not None and datetime.datetime.now() > self.verification_deadline): verified = False else: verified = True diff --git a/users/views.py b/users/views.py index 4072e6a7..fc58bb64 100644 --- a/users/views.py +++ b/users/views.py @@ -111,11 +111,17 @@ def new_user(request): GTU_sum_up = GeneralOption.get_cached_value('GTU_sum_up') GTU = GeneralOption.get_cached_value('GTU') if user.is_valid(): + password = user.cleaned_data['password2'] user = user.save(commit=False) user.save() - user.reset_passwd_mail(request) - messages.success(request, "L'utilisateur %s a été crée, un mail\ - pour l'initialisation du mot de passe a été envoyé" % user.pseudo) + if(password != ""): + user.set_password(password) + user.save() + messages.success(request, "L'utilisateur %s a été créé" % user.pseudo) + else: + user.reset_passwd_mail(request) + messages.success(request, "L'utilisateur %s a été crée, un mail\ + pour l'initialisation du mot de passe a été envoyé" % user.pseudo) return redirect(reverse( 'users:profil', kwargs={'userid': str(user.id)}