Merge branch 'master' of ssh://bitbucket.org/yackob03/quay into webhooks

Conflicts:
	endpoints/api.py
	test/data/test.db
This commit is contained in:
yackob03 2013-11-15 16:48:55 -05:00
commit 7ae78e5370
18 changed files with 487 additions and 185 deletions

View file

@ -71,8 +71,7 @@ def plans_list():
})
@app.route('/api/user/', methods=['GET'])
def get_logged_in_user():
def user_view(user):
def org_view(o):
admin_org = AdministerOrganizationPermission(o.username)
return {
@ -82,16 +81,9 @@ def get_logged_in_user():
'can_create_repo': admin_org.can() or CreateRepositoryPermission(o.username).can()
}
if current_user.is_anonymous():
return jsonify({'anonymous': True})
user = current_user.db_user()
if not user or user.organization:
return jsonify({'anonymous': True})
organizations = model.get_user_organizations(user.username)
return jsonify({
return {
'verified': user.verified,
'anonymous': False,
'username': user.username,
@ -99,8 +91,21 @@ def get_logged_in_user():
'gravatar': compute_hash(user.email),
'askForPassword': user.password_hash is None,
'organizations': [org_view(o) for o in organizations],
'can_create_repo': True
})
'can_create_repo': True,
'invoice_email': user.invoice_email
}
@app.route('/api/user/', methods=['GET'])
def get_logged_in_user():
if current_user.is_anonymous():
return jsonify({'anonymous': True})
user = current_user.db_user()
if not user or user.organization:
return jsonify({'anonymous': True})
return jsonify(user_view(user))
@app.route('/api/user/convert', methods=['POST'])
@ -150,6 +155,11 @@ def change_user_details():
if 'password' in user_data:
logger.debug('Changing password for user: %s', user.username)
model.change_password(user, user_data['password'])
if 'invoice_email' in user_data:
logger.debug('Changing invoice_email for user: %s', user.username)
model.change_invoice_email(user, user_data['invoice_email'])
except model.InvalidPasswordException, ex:
error_resp = jsonify({
'message': ex.message,
@ -157,14 +167,7 @@ def change_user_details():
error_resp.status_code = 400
return error_resp
return jsonify({
'verified': user.verified,
'anonymous': False,
'username': user.username,
'email': user.email,
'gravatar': compute_hash(user.email),
'askForPassword': user.password_hash is None,
})
return jsonify(user_view(user))
@app.route('/api/user/', methods=['POST'])
@ -341,22 +344,28 @@ def create_organization_api():
return error_resp
def org_view(o, teams):
admin_org = AdministerOrganizationPermission(o.username)
is_admin = admin_org.can()
view = {
'name': o.username,
'email': o.email if is_admin else '',
'gravatar': compute_hash(o.email),
'teams': {t.name : team_view(o.username, t) for t in teams},
'is_admin': is_admin
}
if is_admin:
view['invoice_email'] = o.invoice_email
return view
@app.route('/api/organization/<orgname>', methods=['GET'])
@api_login_required
def get_organization(orgname):
permission = OrganizationMemberPermission(orgname)
if permission.can():
def org_view(org, teams):
admin_org = AdministerOrganizationPermission(orgname)
is_admin = admin_org.can()
return {
'name': org.username,
'email': org.email if is_admin else '',
'gravatar': compute_hash(org.email),
'teams': {t.name : team_view(orgname, t) for t in teams},
'is_admin': is_admin
}
try:
org = model.get_organization(orgname)
except model.InvalidOrganizationException:
@ -367,6 +376,28 @@ def get_organization(orgname):
abort(403)
@app.route('/api/organization/<orgname>', methods=['PUT'])
@api_login_required
def change_organization_details(orgname):
permission = AdministerOrganizationPermission(orgname)
if permission.can():
try:
org = model.get_organization(orgname)
except model.InvalidOrganizationException:
abort(404)
org_data = request.get_json();
if 'invoice_email' in org_data:
logger.debug('Changing invoice_email for organization: %s', org.username)
model.change_invoice_email(org, org_data['invoice_email'])
teams = model.get_teams_within_org(org)
return jsonify(org_view(org, teams))
abort(403)
@app.route('/api/organization/<orgname>/members', methods=['GET'])
@api_login_required
def get_organization_members(orgname):
@ -1265,7 +1296,7 @@ def subscribe(user, plan, token, accepted_plans):
if not user.stripe_id:
# Check if a non-paying user is trying to subscribe to a free plan
if not plan_found['price'] == 0:
# They want a real paying plan, create the customerand plan
# They want a real paying plan, create the customer and plan
# simultaneously
card = token
cus = stripe.Customer.create(email=user.email, plan=plan, card=card)