Exemple #1
0
def register(request, plan_name=''):
    """ Registration page """
    DEFAULT_PLAN = "Free"
    try:
        plan = SubscriptionPlan.objects.get(name__iexact=plan_name)
    except:
        plan = SubscriptionPlan.objects.get(name=DEFAULT_PLAN)
    if request.method == 'POST':
        form = RegistrationForm(plan.free, data=request.POST)
        if form.is_valid():
            # save user
            user = form.save(commit=False)
            user.email = form.cleaned_data['username']
            user.first_name, user.last_name = \
                (form.cleaned_data.get('card_holder') or ' ').split(' ', 1)
            user.save()
            # save subscription
            try:
                form.subscribe(user, plan)
            except MouseTrap, e:
                form._errors['CC'] = str(e)
                user.delete()
        if form.is_valid():
            # save profile
            profile = user.get_profile()
            profile.user = user
            profile.plan = plan
            profile.reset()
            # send welcome email
            if plan.billing_period_price:
                tpl = loader.get_template('email_welcome_paid.txt')
            else:
                tpl = loader.get_template('email_welcome_free.txt')
            first_charge_date = datetime.now().date() + timedelta(days=7)
            ctx = Context({'user': user, 'profile': profile,
                           'first_charge_date': first_charge_date,})
            subject, message = tpl.render(ctx).split('\n', 1)
            eric = "*****@*****.**"
            send_mail(subject=subject, message=message,
                from_email=settings.ACCOUNTS_EMAIL,
                recipient_list=[user.email])
            # log in automatically
            login(request, authenticate(
                username=user.email,
                password=form.cleaned_data['password1'],
            ))
            return HttpResponseRedirect(reverse(monitor))