def subscribe(request): if request.method != "POST": raise Http404() api_key = getattr(settings, "MAILCHIMP_API_KEY", None) list_id = getattr(settings, "MAILCHIMP_LIST_ID", None) if not api_key or not list_id: raise Http404() user = request.user form = SubscribeForm(request.POST) if form.is_valid(): email = form.cleaned_data["email"] kwargs = {} if user.is_authenticated(): kwargs["first_name"] = user.first_name kwargs["last_name"] = user.last_name do_subscribe.delay(email, **kwargs) messages.success(request, u"You are subscribed to OER Commons newsletter now.") return redirect("frontpage")
def registration(request): if request.user.is_authenticated(): return redirect("frontpage") page_title = u"Registration" breadcrumbs = [{"url": reverse("users:registration"), "title": page_title}] form = RegistrationForm() if request.method == "POST": form = RegistrationForm(request.POST) if form.is_valid(): data = form.cleaned_data email = data["email"] username = "******" % (User.objects.aggregate(Max("id"))["id__max"] + 1) email_taken = False email_pending = False if User.objects.filter(email=email).exists(): email_taken = True user = User.objects.get(email=email) if RegistrationConfirmation.objects.filter(user=user, confirmed=False).count(): email_pending = True if email_pending: resend_confirmation_url = reverse("users:registration_resend") message = u"A registration request for the user account with email <em>%(email)s</em> needs to be confirmed. <a href=\"%(url)s?email=%(email)s\">Click here</a> to re-send the confirmation email." message = message % dict(email=email, url=resend_confirmation_url) messages.warning(request, message) return direct_to_template(request, "users/registration.html", locals()) elif email_taken: reset_password_url = reverse("users:reset_password_init") message = u"User with email <em>%(email)s</em> is registered already. If you forgot your password you can <a href=\"%(url)s\">click here</a> to reset it." message = message % dict(email=email, url=reset_password_url) messages.warning(request, message) return direct_to_template(request, "users/registration.html", locals()) else: password = encrypt_password(data["password"]) user = User(username=username, first_name=u"", last_name=u"", email=email, password=password, is_active=True) user.save() Profile.objects.create(user=user) confirmation = RegistrationConfirmation(user=user, confirmed=False) confirmation.save() confirmation.send_confirmation() if data["newsletter"]: subscribe.delay(email) messages.success(request, u"Confirmation email was sent to you.") backend = BcryptBackend() user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__) auth_login(request, user) return redirect("users:welcome") else: messages.error(request, u"Please correct the indicated errors.") return direct_to_template(request, "users/registration.html", locals())