Start on controllers and the API for organizations. Also adds fake model methods

This commit is contained in:
Joseph Schorr 2013-10-31 18:17:26 -04:00
parent 621f89f826
commit d7148b1711
5 changed files with 99 additions and 3 deletions

View file

@ -53,10 +53,18 @@ def welcome():
@app.route('/api/user/', methods=['GET'])
def get_logged_in_user():
def org_view(o):
return {
'name': o.username,
'gravatar': compute_hash(o.email),
}
if current_user.is_anonymous():
return jsonify({'anonymous': True})
user = current_user.db_user()
organizations = model.get_user_organizations(user.username)
return jsonify({
'verified': user.verified,
'anonymous': False,
@ -64,8 +72,10 @@ def get_logged_in_user():
'email': user.email,
'gravatar': compute_hash(user.email),
'askForPassword': user.password_hash is None,
'organizations': [org_view(o) for o in organizations]
})
@app.route('/api/user/', methods=['PUT'])
@api_login_required
def change_user_details():
@ -179,6 +189,32 @@ user_files = UserRequestFiles(app.config['AWS_ACCESS_KEY'],
app.config['AWS_SECRET_KEY'],
app.config['REGISTRY_S3_BUCKET'])
@app.route('/api/organization/<orgname>', methods=['GET'])
def get_organization(orgname):
def team_view(t):
return {
'id': t.id,
'name': t.name
}
def org_view(o, teams):
return {
'name': o.username,
'gravatar': compute_hash(o.email),
'teams': [team_view(t) for t in teams]
}
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)
teams = model.get_user_teams(user.username, organization)
return jsonify(org_view(organization, teams))
@app.route('/api/repository', methods=['POST'])
@api_login_required
@ -236,6 +272,7 @@ def list_repos_api():
}
limit = request.args.get('limit', None)
namespace_filter = request.args.get('namespace', None)
include_public = request.args.get('public', 'true')
include_private = request.args.get('private', 'true')
sort = request.args.get('sort', 'false')
@ -255,7 +292,7 @@ def list_repos_api():
repo_query = model.get_visible_repositories(username, limit=limit,
include_public=include_public,
sort=sort)
sort=sort, namespace=namespace_filter)
repos = [repo_view(repo) for repo in repo_query]
response = {
'repositories': repos