From 5feef8ae17a6f3c2acab3da922835acae77d990b Mon Sep 17 00:00:00 2001 From: Jean-Romain Garnier Date: Fri, 17 Apr 2020 18:53:49 +0200 Subject: [PATCH] Also update email state in EmailSettingsForm --- users/forms.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/users/forms.py b/users/forms.py index d7c3c15b..6fda0847 100644 --- a/users/forms.py +++ b/users/forms.py @@ -875,6 +875,22 @@ class EmailSettingsForm(FormRevMixin, FieldPermissionFormMixin, ModelForm): ) ) + def save(self, commit=True): + """Update email state if email was changed""" + user = super(EmailSettingsForm, self).save(commit=commit) + + if self.initial["email"] and user.email != self.initial["email"]: + # Send a confirmation email + if user.state in [User.STATE_ACTIVE, User.STATE_DISABLED, User.STATE_NOT_YET_ACTIVE]: + user.email_state = User.EMAIL_STATE_PENDING + self.should_send_confirmation_email = True + + # Always keep the oldest change date + if user.email_change_date is None: + user.email_change_date = timezone.now() + + user.save() + class Meta: model = User fields = ["email", "local_email_enabled", "local_email_redirect"]