Start on controllers and the API for organizations. Also adds fake model methods
This commit is contained in:
parent
621f89f826
commit
d7148b1711
5 changed files with 99 additions and 3 deletions
|
@ -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
|
||||
|
|
Reference in a new issue