Get robots UI working

This commit is contained in:
Joseph Schorr 2013-11-22 20:14:44 -05:00
parent 43f2dd80a0
commit 12eb932da1
11 changed files with 309 additions and 143 deletions

View file

@ -297,7 +297,7 @@ def get_matching_entities(prefix):
}
if user.is_org_member is not None:
user_json['is_org_member'] = user.is_org_member
user_json['is_org_member'] = user.is_robot or user.is_org_member
return user_json
@ -924,8 +924,8 @@ def wrap_role_view_user(role_json, user):
return role_json
def wrap_role_view_org(role_json, org_member):
role_json['is_org_member'] = org_member
def wrap_role_view_org(role_json, user, org_members):
role_json['is_org_member'] = user.robot or user.username in org_members
return role_json
@ -1034,22 +1034,30 @@ def list_repo_team_permissions(namespace, repository):
def list_repo_user_permissions(namespace, repository):
permission = AdministerRepositoryPermission(namespace, repository)
if permission.can():
# Determine how to wrap the permissions
role_view_func = role_view
# Lookup the organization (if any).
org = None
try:
model.get_organization(namespace) # Will raise an error if not org
org_members = model.get_organization_member_set(namespace)
def wrapped_role_view(repo_perm):
unwrapped = wrap_role_view_user(role_view(repo_perm), repo_perm.user)
return wrap_role_view_org(unwrapped,
repo_perm.user.username in org_members)
role_view_func = wrapped_role_view
org = model.get_organization(namespace) # Will raise an error if not org
except model.InvalidOrganizationException:
# This repository isn't under an org
pass
# Determine how to wrap the role(s).
def wrapped_role_view(repo_perm):
return wrap_role_view_user(role_view(repo_perm), repo_perm.user)
role_view_func = wrapped_role_view
if org:
org_members = model.get_organization_member_set(namespace)
current_func = role_view_func
def wrapped_role_org_view(repo_perm):
return wrap_role_view_org(current_func(repo_perm), repo_perm.user, org_members)
role_view_func = wrapped_role_org_view
# Load and return the permissions.
repo_perms = model.get_all_repo_users(namespace, repository)
return jsonify({
'permissions': {perm.user.username: role_view_func(perm)
@ -1074,8 +1082,7 @@ def get_user_permissions(namespace, repository, username):
try:
model.get_organization(namespace)
org_members = model.get_organization_member_set(namespace)
perm_view = wrap_role_view_org(perm_view,
perm.user.username in org_members)
perm_view = wrap_role_view_org(perm_view, perm.user, org_members)
except model.InvalidOrganizationException:
# This repository is not part of an organization
pass
@ -1119,8 +1126,7 @@ def change_user_permissions(namespace, repository, username):
try:
model.get_organization(namespace)
org_members = model.get_organization_member_set(namespace)
perm_view = wrap_role_view_org(perm_view,
perm.user.username in org_members)
perm_view = wrap_role_view_org(perm_view, perm.user, org_members)
except model.InvalidOrganizationException:
# This repository is not part of an organization
pass