Commit 927873cd659432717a18d84d70b8bdd423107178
1 parent
f10f7bf0
Exists in
master
and in
39 other branches
Avoiding raising an exception to user
Showing
2 changed files
with
19 additions
and
6 deletions
Show diff stats
src/accounts/views.py
... | ... | @@ -25,6 +25,7 @@ from super_archives.utils.email import send_email_lists |
25 | 25 | from search.utils import trans |
26 | 26 | from .forms import (UserCreationForm, ListsForm, UserUpdateForm, |
27 | 27 | ChangeXMPPPasswordForm) |
28 | +from .errors import XMPPChangePwdException | |
28 | 29 | from .utils import mailman |
29 | 30 | |
30 | 31 | |
... | ... | @@ -181,11 +182,6 @@ class ChangeXMPPPasswordView(UpdateView): |
181 | 182 | fields = ['password', ] |
182 | 183 | template_name = 'accounts/change_password.html' |
183 | 184 | |
184 | - @method_decorator(transaction.atomic) | |
185 | - def dispatch(self, request, *args, **kwargs): | |
186 | - return super(ChangeXMPPPasswordView, self).dispatch(request, *args, | |
187 | - **kwargs) | |
188 | - | |
189 | 185 | def get_success_url(self): |
190 | 186 | return reverse('user_profile', kwargs={ |
191 | 187 | 'username': self.request.user.username |
... | ... | @@ -197,6 +193,8 @@ class ChangeXMPPPasswordView(UpdateView): |
197 | 193 | return obj |
198 | 194 | |
199 | 195 | def form_valid(self, form): |
196 | + transaction.set_autocommit(False) | |
197 | + | |
200 | 198 | response = super(ChangeXMPPPasswordView, self).form_valid(form) |
201 | 199 | |
202 | 200 | changed = xmpp.change_password( |
... | ... | @@ -204,6 +202,19 @@ class ChangeXMPPPasswordView(UpdateView): |
204 | 202 | self.old_password, |
205 | 203 | form.cleaned_data['password2'] |
206 | 204 | ) |
205 | + | |
207 | 206 | if not changed: |
208 | - raise Exception | |
207 | + messages.error( | |
208 | + self.request, | |
209 | + _(u'Could not change your password. Please, try again later.') | |
210 | + ) | |
211 | + transaction.rollback() | |
212 | + return response | |
213 | + else: | |
214 | + transaction.commit() | |
215 | + | |
216 | + messages.success( | |
217 | + self.request, | |
218 | + _("You've changed your password successfully!") | |
219 | + ) | |
209 | 220 | return response | ... | ... |