snipt/accounts/views.py

74 lines
1.9 KiB
Python
Raw Normal View History

2014-10-30 09:17:47 -07:00
from django.conf import settings
from django.contrib.auth.decorators import login_required
2013-10-19 17:48:00 -07:00
from annoying.decorators import ajax_request, render_to
from snipts.models import Snipt
2015-07-24 18:28:31 -07:00
import os
import stripe
2013-10-19 17:48:00 -07:00
@login_required
@render_to('account.html')
def account(request):
return {}
2013-10-19 17:48:00 -07:00
@login_required
2014-05-23 06:13:43 -07:00
@ajax_request
def cancel_subscription(request):
if request.user.profile.stripe_id is None:
return {}
else:
2015-07-24 18:28:31 -07:00
stripe.api_key = os.environ.get('STRIPE_SECRET_KEY',
settings.STRIPE_SECRET_KEY)
2014-05-23 06:13:43 -07:00
customer = stripe.Customer.retrieve(request.user.profile.stripe_id)
customer.delete()
profile = request.user.profile
profile.is_pro = False
profile.stripe_id = None
profile.save()
2015-07-24 18:28:31 -07:00
return {'deleted': True}
2014-05-23 06:13:43 -07:00
@login_required
2013-10-19 17:48:00 -07:00
@ajax_request
def stripe_account_details(request):
if request.user.profile.stripe_id is None:
return {}
else:
2015-07-24 18:28:31 -07:00
stripe.api_key = os.environ.get('STRIPE_SECRET_KEY',
settings.STRIPE_SECRET_KEY)
2013-10-19 17:48:00 -07:00
customer = stripe.Customer.retrieve(request.user.profile.stripe_id)
2013-10-22 10:58:13 -07:00
data = {
2013-10-19 17:48:00 -07:00
'last4': customer.active_card.last4,
'created': customer.created,
'email': customer.email,
}
2013-10-22 10:58:13 -07:00
if customer.subscription:
data['amount'] = customer.subscription.plan.amount
data['interval'] = customer.subscription.plan.interval
data['name'] = customer.subscription.plan.name
data['status'] = customer.subscription.status
data['nextBill'] = customer.subscription.current_period_end
else:
data['status'] = 'inactive'
return data
2013-10-19 17:48:00 -07:00
@login_required
@render_to('stats.html')
def stats(request):
snipts = Snipt.objects.filter(user=request.user).order_by('-views')
return {
'snipts': snipts
}