From c2b7d9a257d7395818733c417483e997ca56eb47 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sun, 30 Sep 2018 14:07:14 +0200 Subject: [PATCH] Fix transaction handling in invite form --- src/pretix/control/views/auth.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/pretix/control/views/auth.py b/src/pretix/control/views/auth.py index 55ec0ccde7..b7b2f7aa85 100644 --- a/src/pretix/control/views/auth.py +++ b/src/pretix/control/views/auth.py @@ -142,21 +142,22 @@ def invite(request, token): if request.method == 'POST': form = RegistrationForm(data=request.POST) - if form.is_valid(): - user = User.objects.create_user( - form.cleaned_data['email'], form.cleaned_data['password'], - locale=request.LANGUAGE_CODE, - timezone=request.timezone if hasattr(request, 'timezone') else settings.TIME_ZONE - ) - user = authenticate(request=request, email=user.email, password=form.cleaned_data['password']) - user.log_action('pretix.control.auth.user.created', user=user) - auth_login(request, user) - request.session['pretix_auth_login_time'] = int(time.time()) - request.session['pretix_auth_long_session'] = ( - settings.PRETIX_LONG_SESSIONS and form.cleaned_data.get('keep_logged_in', False) - ) + with transaction.atomic(): + valid = form.is_valid() + if valid: + user = User.objects.create_user( + form.cleaned_data['email'], form.cleaned_data['password'], + locale=request.LANGUAGE_CODE, + timezone=request.timezone if hasattr(request, 'timezone') else settings.TIME_ZONE + ) + user = authenticate(request=request, email=user.email, password=form.cleaned_data['password']) + user.log_action('pretix.control.auth.user.created', user=user) + auth_login(request, user) + request.session['pretix_auth_login_time'] = int(time.time()) + request.session['pretix_auth_long_session'] = ( + settings.PRETIX_LONG_SESSIONS and form.cleaned_data.get('keep_logged_in', False) + ) - with transaction.atomic(): inv.team.members.add(request.user) inv.team.log_action( 'pretix.team.member.joined', data={