def sign_up(request): if settings.STUDENT_SIGN_IN_VIEW != "relate-sign_in_by_user_pw": raise SuspiciousOperation( _("password-based sign-in is not being used")) if request.method == 'POST': form = SignUpForm(request.POST) if form.is_valid(): if get_user_model().objects.filter( username=form.cleaned_data["username"]).count(): messages.add_message(request, messages.ERROR, _("A user with that username already exists.")) elif get_user_model().objects.filter( email__iexact=form.cleaned_data["email"]).count(): messages.add_message(request, messages.ERROR, _("That email address is already in use. " "Would you like to " "<a href='%s'>reset your password</a> instead?") % reverse( "relate-reset_password")), else: email = form.cleaned_data["email"] user = get_user_model()( email=email, username=form.cleaned_data["username"]) user.set_unusable_password() user.save() ustatus = UserStatus( user=user, status=user_status.unconfirmed, sign_in_key=make_sign_in_key(user)) ustatus.save() from django.template.loader import render_to_string message = render_to_string("course/sign-in-email.txt", { "user": user, "sign_in_uri": request.build_absolute_uri( reverse( "relate-reset_password_stage2", args=(user.id, ustatus.sign_in_key,)) + "?to_profile=1"), "home_uri": request.build_absolute_uri( reverse("relate-home")) }) from django.core.mail import send_mail send_mail( string_concat("[", _("RELATE"), "] ", _("Verify your email")), message, settings.ROBOT_EMAIL_FROM, recipient_list=[email]) messages.add_message(request, messages.INFO, _("Email sent. Please check your email and click " "the link.")) return redirect("relate-home") else: form = SignUpForm() return render(request, "generic-form.html", { "form_description": _("Sign up"), "form": form })
def sign_up(request): if settings.STUDENT_SIGN_IN_VIEW != "relate-sign_in_by_user_pw": raise SuspiciousOperation( _("password-based sign-in is not being used")) if request.method == 'POST': form = SignUpForm(request.POST) if form.is_valid(): from django.contrib.auth.models import User if User.objects.filter( username=form.cleaned_data["username"]).count(): messages.add_message(request, messages.ERROR, _("That user name is already taken.")) elif User.objects.filter( email__iexact=form.cleaned_data["email"]).count(): messages.add_message( request, messages.ERROR, _("That email address is already in use. " "Would you like to " "<a href='%s'>reset your password</a> instead?") % reverse("relate-reset_password")), else: email = form.cleaned_data["email"] user = User(email=email, username=form.cleaned_data["username"]) user.set_unusable_password() user.save() ustatus = UserStatus(user=user, status=user_status.unconfirmed, sign_in_key=make_sign_in_key(user)) ustatus.save() from django.template.loader import render_to_string message = render_to_string( "course/sign-in-email.txt", { "user": user, "sign_in_uri": request.build_absolute_uri( reverse("relate-reset_password_stage2", args=( user.id, ustatus.sign_in_key, )) + "?to_profile=1"), "home_uri": request.build_absolute_uri(reverse("relate-home")) }) from django.core.mail import send_mail send_mail(string_concat("[", _("RELATE"), "] ", _("Verify your email")), message, settings.ROBOT_EMAIL_FROM, recipient_list=[email]) messages.add_message( request, messages.INFO, _("Email sent. Please check your email and click " "the link.")) return redirect("relate-home") else: form = SignUpForm() return render(request, "generic-form.html", { "form_description": _("Sign up"), "form": form })
def sign_in_by_email(request): if settings.STUDENT_SIGN_IN_VIEW != "course.auth.sign_in_by_email": raise SuspiciousOperation("email-based sign-in is not being used") if request.method == 'POST': form = SignInByEmailForm(request.POST) if form.is_valid(): from django.contrib.auth.models import User email = form.cleaned_data["email"] users = User.objects.filter(email__iexact=email) if users.count() > 1: messages.add_message(request, messages.ERROR, "More than one user with this email. " "Please contact site staff.") raise PermissionDenied("duplicate email") if users.count() == 0: user = User() user.username = email user.email = email user.set_unusable_password() user.save() ustatus = UserStatus() ustatus.user = user ustatus.status = user_status.unconfirmed ustatus.sign_in_key = make_sign_in_key(user) ustatus.save() elif users.count() == 1: user, = users ustatus = user.user_status ustatus.user = user ustatus.sign_in_key = make_sign_in_key(user) ustatus.save() from django.template.loader import render_to_string message = render_to_string("course/sign-in-email.txt", { "user": user, "sign_in_uri": request.build_absolute_uri( reverse( "course.auth.sign_in_stage2_with_token", args=(user.id, ustatus.sign_in_key,))), "home_uri": request.build_absolute_uri(reverse("course.views.home")) }) from django.core.mail import send_mail send_mail("Your CourseFlow sign-in link", message, settings.ROBOT_EMAIL_FROM, recipient_list=[email]) messages.add_message(request, messages.INFO, "Email sent. Please check your email and click the link.") return redirect("course.views.home") else: form = SignInByEmailForm() return render(request, "course/login-by-email.html", { "form_description": "", "form": form })