Add proper messaging if an organization has gone over the repo limit. This change also moves plan information into the server

This commit is contained in:
Joseph Schorr 2013-11-01 19:13:58 -04:00
parent 1f0b142535
commit 9fa77aaa48
6 changed files with 226 additions and 99 deletions

View file

@ -16,6 +16,7 @@ import storage
from data import model
from data.userfiles import UserRequestFiles
from data.queue import dockerfile_build_queue
from data.plans import USER_PLANS, getPlan, isPlanActive
from app import app
from util.email import send_confirmation_email, send_recovery_email
from util.names import parse_repository_name
@ -45,11 +46,13 @@ def api_login_required(f):
def handle_dme(ex):
return make_response(ex.message, 400)
@app.route('/api/')
def welcome():
return make_response('welcome', 200)
@app.route('/api/plans/')
def plans_list():
return jsonify({ 'plans': USER_PLANS })
@app.route('/api/user/', methods=['GET'])
def get_logged_in_user():
@ -216,6 +219,31 @@ def get_organization(orgname):
return jsonify(org_view(organization, teams))
@app.route('/api/organization/<orgname>/private', methods=['GET'])
def get_organization_private_allowed(orgname):
if current_user.is_anonymous():
abort(404)
user = current_user.db_user()
organization = model.lookup_organization(orgname, username = user.username)
if not organization:
abort(404)
private_repos = model.get_private_repo_count(organization.username)
if organization.stripe_id:
cus = stripe.Customer.retrieve(organization.stripe_id)
if cus.subscription and isPlanActive(cus.subscription):
repos_allowed = getPlan(cus.subscription.plan.id)
return jsonify({
'privateAllowed': (private_repos < repos_allowed)
})
return jsonify({
'privateAllowed': False
})
@app.route('/api/repository', methods=['POST'])
@api_login_required
def create_repo_api():
@ -786,7 +814,7 @@ def get_subscription():
if user.stripe_id:
cus = stripe.Customer.retrieve(user.stripe_id)
if cus.subscription:
if cus.subscription:
return jsonify(subscription_view(cus.subscription, private_repos))
return jsonify({