Skip to content

Instantly share code, notes, and snippets.

@cmsimike
Created August 31, 2012 16:46

Revisions

  1. @invalid-email-address Anonymous created this gist Aug 31, 2012.
    52 changes: 52 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@
    model:
    class Subscription(models.Model):
    user = models.ForeignKey(User)
    stripe_id = models.CharField(max_length=255)
    subscribed = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    expires = models.DateTimeField(null=True, blank=True)

    def save(self, *args, **kwargs):
    self.expires = datetime.datetime.now() + datetime.timedelta(365)
    super(Subscription, self).save(*args, **kwargs)


    view:
    @require_login
    def payment(request):
    context = {}
    if request.method == 'POST':
    token = request.POST['stripeToken']
    customer = stripe.Customer.create(
    description = request.POST['email'],
    card = token,
    plan = 'premium_annual',
    email = request.POST['email'],
    )
    subscription = Subscription(
    user=request.user,
    stripe_id=customer.id,
    subscribed=True,
    )
    try:
    if Subscription.objects.filter(user=request.user).exists():
    context['subscription'] = subscription
    else:
    subscription.save()
    #UserProfile.objects.get(user=request.user, is_premium=True).save()
    except IntegrityError:
    messages.error(request, "Subscription already exists.")

    context['publishable'] = settings.STRIPE_PUBLISH

    return HttpResponseRedirect("/activities/all/")

    form = StripePaymentForm()
    if Subscription.objects.filter(user=request.user).exists():
    messages.error(request, "Subscription already exists.")
    return HttpResponseRedirect("/activities/all/")

    context['form'] = form
    context['no_left_bar'] = True
    return render_to_response('signup/premium_payment.html', context, context_instance=RequestContext(request))