diff --git a/src/accounts/forms.py b/src/accounts/forms.py index 6f16aa6..9f93889 100644 --- a/src/accounts/forms.py +++ b/src/accounts/forms.py @@ -81,6 +81,7 @@ class ChangeXMPPPasswordForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(ChangeXMPPPasswordForm, self).__init__(*args, **kwargs) + for field_name, field in self.fields.items(): # Adds form-control class to all form fields field.widget.attrs.update({'class': 'form-control'}) @@ -90,7 +91,13 @@ class ChangeXMPPPasswordForm(forms.ModelForm): password2 = self.cleaned_data.get("password2") if password1 and password2 and password1 != password2: raise forms.ValidationError( - self.error_messages['password_mismatch'], + _("Password mismatch"), code='password_mismatch', ) return password2 + + def save(self, commit=True): + self.instance.password = self.cleaned_data['password2'] + if commit: + self.instance.save() + return self.instance diff --git a/src/accounts/views.py b/src/accounts/views.py index fb9b706..cbb2fc3 100644 --- a/src/accounts/views.py +++ b/src/accounts/views.py @@ -192,13 +192,18 @@ class ChangeXMPPPasswordView(UpdateView): }) def get_object(self, queryset=None): - return get_object_or_404(XMPPAccount, user=self.request.user.pk) + obj = get_object_or_404(XMPPAccount, user=self.request.user.pk) + self.old_password = obj.password + return obj def form_valid(self, form): - self.object = form.save() + response = super(ChangeXMPPPasswordView, self).form_valid(form) - xmpp_account = self.get_object() - changed = xmpp.change_password(xmpp_account, password) + changed = xmpp.change_password( + self.object.jid, + self.old_password, + form.cleaned_data['password2'] + ) if not changed: raise Exception - return super(ChangeXMPPPassword, self).form_valid(form) + return response -- libgit2 0.21.2