From 5b42a3b1059b8964432d113bbb1c15f1d9219db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felipe=20Marti=CC=81n?= Date: Mon, 26 Jan 2015 14:35:05 +0100 Subject: [PATCH] Atomic transaction on registering users --- shelfzilla/apps/account/forms.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/shelfzilla/apps/account/forms.py b/shelfzilla/apps/account/forms.py index 895de7a..880ddb9 100644 --- a/shelfzilla/apps/account/forms.py +++ b/shelfzilla/apps/account/forms.py @@ -1,5 +1,6 @@ from django import forms from django.contrib.auth import authenticate +from django.db import transaction from django.contrib.auth.forms import ( PasswordChangeForm as DjangoPasswordChangeForm ) @@ -51,7 +52,8 @@ class RegistrationForm(forms.ModelForm): """ Custom for for registering an user """ - password1 = forms.CharField(label=_('Password'), widget=forms.PasswordInput) + password1 = forms.CharField(label=_('Password'), + widget=forms.PasswordInput) password2 = forms.CharField(label=_('Repeat password'), widget=forms.PasswordInput) access_code = forms.CharField(label=_('Invitation code'), required=True) @@ -84,10 +86,11 @@ class RegistrationForm(forms.ModelForm): def save(self, commit=True): # Save the provided password in hashed format - user = super(UserCreationForm, self).save(commit=False) - access_code = self.get_access_code() - user.access_code = access_code - user.set_password(self.cleaned_data["password1"]) - if commit: - user.save() - return user + with transaction.atomic(): + user = super(RegistrationForm, self).save(commit=False) + access_code = self.get_access_code() + user.access_code = access_code + user.set_password(self.cleaned_data["password1"]) + if commit: + user.save() + return user