Example #1
0
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")
    
Example #2
0
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())