def send_email_reminder(request): """Send reminder email.""" statsd_waffle_incr('users.send_email_reminder', 'signin_metrics') if request.method == 'POST': statsd_waffle_incr('users.send_email_reminder.POST', 'signin_metrics') form = EmailReminderForm(request.POST) if form.is_valid(): error = None username = form.cleaned_data['username'] try: user = User.objects.get(username=username, is_active=True) if user.email: # TODO: should this be on a model or manager instead? statsd_waffle_incr('users.send_email_reminder.SUCCESS', 'signin_metrics') send_reminder_email(user) else: statsd_waffle_incr('users.send_email_reminder.NOEMAIL', 'signin_metrics') error = 'no_email' except User.DoesNotExist: # Don't leak existence of email addresses. statsd_waffle_incr('users.send_email_reminder.NOUSER', 'signin_metrics') return jingo.render(request, 'users/send_email_reminder_done.html', {'username': username, 'error': error}) else: form = EmailConfirmationForm() return jingo.render(request, 'users/resend_confirmation.html', {'form': form})
def send_email_reminder(request): """Send reminder email.""" statsd_waffle_incr('users.send_email_reminder', 'signin_metrics') if request.method == 'POST': statsd_waffle_incr('users.send_email_reminder.POST', 'signin_metrics') form = EmailReminderForm(request.POST) if form.is_valid(): error = None username = form.cleaned_data['username'] try: user = User.objects.get(username=username, is_active=True) if user.email: # TODO: should this be on a model or manager instead? statsd_waffle_incr('users.send_email_reminder.SUCCESS', 'signin_metrics') send_reminder_email(user) else: statsd_waffle_incr('users.send_email_reminder.NOEMAIL', 'signin_metrics') error = 'no_email' except User.DoesNotExist: # Don't leak existence of email addresses. statsd_waffle_incr('users.send_email_reminder.NOUSER', 'signin_metrics') return render(request, 'users/send_email_reminder_done.html', {'username': username, 'error': error}) else: form = EmailConfirmationForm() return render(request, 'users/resend_confirmation.html', {'form': form})
def send_email_reminder(request): """Send reminder email.""" statsd_waffle_incr("users.send_email_reminder", "signin_metrics") if request.method == "POST": statsd_waffle_incr("users.send_email_reminder.POST", "signin_metrics") form = EmailReminderForm(request.POST) if form.is_valid(): error = None username = form.cleaned_data["username"] try: user = User.objects.get(username=username, is_active=True) if user.email: # TODO: should this be on a model or manager instead? statsd_waffle_incr("users.send_email_reminder.SUCCESS", "signin_metrics") send_reminder_email(user) else: statsd_waffle_incr("users.send_email_reminder.NOEMAIL", "signin_metrics") error = "no_email" except User.DoesNotExist: # Don't leak existence of email addresses. statsd_waffle_incr("users.send_email_reminder.NOUSER", "signin_metrics") return jingo.render(request, "users/send_email_reminder_done.html", {"username": username, "error": error}) else: form = EmailConfirmationForm() return jingo.render(request, "users/resend_confirmation.html", {"form": form})
def browserid_register(request): """Handle user creation when assertion is valid, but no existing user""" statsd_waffle_incr('users.browserid_register', 'signin_metrics') redirect_to = request.session.get( SESSION_REDIRECT_TO, getattr(settings, 'LOGIN_REDIRECT_URL', reverse('home'))) email = request.session.get(SESSION_VERIFIED_EMAIL, None) if not email: # This is pointless without a verified email. return HttpResponseRedirect(redirect_to) # Set up the initial forms register_form = BrowserIDRegisterForm() login_form = AuthenticationForm() if request.method == 'POST': statsd_waffle_incr('users.browserid_register.POST', 'signin_metrics') # If the profile creation form was submitted... if 'register' == request.POST.get('action', None): register_form = BrowserIDRegisterForm(request.POST) if register_form.is_valid(): # If the registration form is valid, then create a new # Django user. # TODO: This all belongs in model classes username = register_form.cleaned_data['username'] user = User.objects.create(username=username, email=email) user.set_unusable_password() user.save() profile = UserProfile.objects.create(user=user) profile.save() user.backend = 'django_browserid.auth.BrowserIDBackend' auth.login(request, user) # Bounce to the newly created profile page, since the user # might want to review & edit. statsd_waffle_incr('users.browserid_register.POST.SUCCESS', 'signin_metrics') redirect_to = request.session.get(SESSION_REDIRECT_TO, profile.get_absolute_url()) return set_browserid_explained( HttpResponseRedirect(redirect_to)) # HACK: Pretend the session was modified. Otherwise, the data disappears # for the next request. request.session.modified = True return render(request, 'users/browserid_register.html', { 'login_form': login_form, 'register_form': register_form })
def browserid_register(request): """Handle user creation when assertion is valid, but no existing user""" statsd_waffle_incr('users.browserid_register', 'signin_metrics') redirect_to = request.session.get(SESSION_REDIRECT_TO, getattr(settings, 'LOGIN_REDIRECT_URL', reverse('home'))) email = request.session.get(SESSION_VERIFIED_EMAIL, None) if not email: # This is pointless without a verified email. return HttpResponseRedirect(redirect_to) # Set up the initial forms register_form = BrowserIDRegisterForm(request.locale) login_form = AuthenticationForm() if request.method == 'POST': statsd_waffle_incr('users.browserid_register.POST', 'signin_metrics') # If the profile creation form was submitted... if 'register' == request.POST.get('action', None): register_form = BrowserIDRegisterForm(request.locale, request.POST) if register_form.is_valid(): # If the registration form is valid, then create a new # Django user. # TODO: This all belongs in model classes username = register_form.cleaned_data['username'] user = User.objects.create(username=username, email=email) user.set_unusable_password() user.save() profile = UserProfile.objects.create(user=user) profile.save() user.backend = 'django_browserid.auth.BrowserIDBackend' auth.login(request, user) # Bounce to the newly created profile page, since the user # might want to review & edit. statsd_waffle_incr('users.browserid_register.POST.SUCCESS', 'signin_metrics') newsletter_subscribe(request, email, register_form.cleaned_data) redirect_to = request.session.get(SESSION_REDIRECT_TO, profile.get_absolute_url()) return set_browserid_explained(HttpResponseRedirect(redirect_to)) # HACK: Pretend the session was modified. Otherwise, the data disappears # for the next request. request.session.modified = True return render(request, 'users/browserid_register.html', {'login_form': login_form, 'register_form': register_form})
def browserid_register(request): """Handle user creation when assertion is valid, but no existing user""" statsd_waffle_incr('users.browserid_register', 'signin_metrics') redirect_to = request.session.get(SESSION_REDIRECT_TO, getattr(settings, 'LOGIN_REDIRECT_URL', reverse('home'))) email = request.session.get(SESSION_VERIFIED_EMAIL, None) if not email: # This is pointless without a verified email. return HttpResponseRedirect(redirect_to) # Set up the initial forms register_form = BrowserIDRegisterForm() login_form = AuthenticationForm() if request.method == 'POST': statsd_waffle_incr('users.browserid_register.POST', 'signin_metrics') # If the profile creation form was submitted... if 'register' == request.POST.get('action', None): register_form = BrowserIDRegisterForm(request.POST) if register_form.is_valid(): try: # If the registration form is valid, then create a new # Django user, a new MindTouch user, and link the two # together. # TODO: This all belongs in model classes username = register_form.cleaned_data['username'] user = User.objects.create(username=username, email=email) user.set_unusable_password() user.save() profile = UserProfile.objects.create(user=user) if settings.DEKIWIKI_ENDPOINT: deki_user = DekiUserBackend.post_mindtouch_user(user) profile.deki_user_id = deki_user.id profile.save() user.backend = 'django_browserid.auth.BrowserIDBackend' auth.login(request, user) # Bounce to the newly created profile page, since the user # might want to review & edit. statsd_waffle_incr('users.browserid_register.POST.SUCCESS', 'signin_metrics') redirect_to = request.session.get(SESSION_REDIRECT_TO, profile.get_absolute_url()) return set_browserid_explained( _redirect_with_mindtouch_login(redirect_to, user.username)) except MindTouchAPIError: if user: user.delete() return render(request, '500.html', {'error_message': "We couldn't " "register a new account at this time. " "Please try again later."}) # HACK: Pretend the session was modified. Otherwise, the data disappears # for the next request. request.session.modified = True return render(request, 'users/browserid_register.html', {'login_form': login_form, 'register_form': register_form})
def browserid_register(request): """Handle user creation when assertion is valid, but no existing user""" statsd_waffle_incr('users.browserid_register', 'signin_metrics') redirect_to = request.session.get(SESSION_REDIRECT_TO, getattr(settings, 'LOGIN_REDIRECT_URL', reverse('home'))) email = request.session.get(SESSION_VERIFIED_EMAIL, None) if not email: # This is pointless without a verified email. return HttpResponseRedirect(redirect_to) # Set up the initial forms register_form = BrowserIDRegisterForm() login_form = AuthenticationForm() if request.method == 'POST': statsd_waffle_incr('users.browserid_register.POST', 'signin_metrics') # If the profile creation form was submitted... if 'register' == request.POST.get('action', None): register_form = BrowserIDRegisterForm(request.POST) if register_form.is_valid(): try: # If the registration form is valid, then create a new # Django user, a new MindTouch user, and link the two # together. # TODO: This all belongs in model classes username = register_form.cleaned_data['username'] user = User.objects.create(username=username, email=email) user.set_unusable_password() user.save() profile = UserProfile.objects.create(user=user) if settings.DEKIWIKI_ENDPOINT: deki_user = DekiUserBackend.post_mindtouch_user(user) profile.deki_user_id = deki_user.id profile.save() user.backend = 'django_browserid.auth.BrowserIDBackend' auth.login(request, user) # Bounce to the newly created profile page, since the user # might want to review & edit. statsd_waffle_incr('users.browserid_register.POST.SUCCESS', 'signin_metrics') redirect_to = request.session.get(SESSION_REDIRECT_TO, profile.get_absolute_url()) return set_browserid_explained( _redirect_with_mindtouch_login(redirect_to, user.username)) except MindTouchAPIError: if user: user.delete() return jingo.render(request, '500.html', {'error_message': "We couldn't " "register a new account at this time. " "Please try again later."}) # HACK: Pretend the session was modified. Otherwise, the data disappears # for the next request. request.session.modified = True return jingo.render(request, 'users/browserid_register.html', {'login_form': login_form, 'register_form': register_form})