Merge branch 'orgs' of https://bitbucket.org/yackob03/quay into orgs
This commit is contained in:
		
						commit
						91806ee252
					
				
					 6 changed files with 61 additions and 24 deletions
				
			
		|  | @ -229,12 +229,16 @@ def get_matching_entities(prefix): | |||
|     } | ||||
| 
 | ||||
|   def user_view(user): | ||||
|     return { | ||||
|     user_json = { | ||||
|       'name': user.username, | ||||
|       'kind': 'user', | ||||
|       'is_org_member': user.is_org_member, | ||||
|     } | ||||
| 
 | ||||
|     if user.is_org_member is not None: | ||||
|       user_json['is_org_member'] = user.is_org_member | ||||
| 
 | ||||
|     return user_json | ||||
| 
 | ||||
|   team_data = [team_view(team) for team in teams] | ||||
|   user_data = [user_view(user) for user in users] | ||||
|   return jsonify({ | ||||
|  | @ -705,18 +709,17 @@ def request_repo_build(namespace, repository): | |||
|   abort(403)  # Permissions denied | ||||
| 
 | ||||
| 
 | ||||
| def role_view_org(repo_perm_obj, org_member): | ||||
|   return { | ||||
|     'role': repo_perm_obj.role.name, | ||||
|     'is_org_member': org_member, | ||||
|   } | ||||
| 
 | ||||
| def role_view(repo_perm_obj): | ||||
|   return { | ||||
|     'role': repo_perm_obj.role.name, | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| def wrap_role_view_org(role_json, org_member): | ||||
|   role_json['is_org_member'] = org_member | ||||
|   return role_json | ||||
| 
 | ||||
| 
 | ||||
| @app.route('/api/repository/<path:repository>/image/', methods=['GET']) | ||||
| @parse_repository_name | ||||
| def list_repository_images(namespace, repository): | ||||
|  | @ -818,16 +821,26 @@ 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 | ||||
|     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 = role_view(repo_perm) | ||||
|         return wrap_role_view_org(unwrapped, | ||||
|                                   repo_perm.user.username in org_members) | ||||
| 
 | ||||
|       role_view_func = wrapped_role_view | ||||
| 
 | ||||
|     except model.InvalidOrganizationException: | ||||
|       # This repository isn't under an org | ||||
|       pass | ||||
| 
 | ||||
|     repo_perms = model.get_all_repo_users(namespace, repository) | ||||
|     org_members = model.get_organization_member_set(namespace) | ||||
| 
 | ||||
|     def process_perm(repo_perm): | ||||
|       return (repo_perm.user.username, | ||||
|               role_view_org(repo_perm, | ||||
|                             repo_perm.user.username in org_members)) | ||||
| 
 | ||||
|     return jsonify({ | ||||
|       'permissions': dict(process_perm(perm) for perm in repo_perms) | ||||
|       'permissions': {perm.user.username: role_view_func(perm) | ||||
|                       for perm in repo_perms} | ||||
|     }) | ||||
| 
 | ||||
|   abort(403)  # Permission denied | ||||
|  | @ -843,8 +856,18 @@ def get_user_permissions(namespace, repository, username): | |||
|   permission = AdministerRepositoryPermission(namespace, repository) | ||||
|   if permission.can(): | ||||
|     perm = model.get_user_reponame_permission(username, namespace, repository) | ||||
|     org_members = model.get_organization_member_set(namespace) | ||||
|     return jsonify(role_view_org(perm, perm.user.username in org_members)) | ||||
|     perm_view = role_view(perm) | ||||
| 
 | ||||
|     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) | ||||
|     except model.InvalidOrganizationException: | ||||
|       # This repository is not part of an organization | ||||
|       pass | ||||
| 
 | ||||
|     return jsonify(perm_view) | ||||
| 
 | ||||
|   abort(403)  # Permission denied | ||||
| 
 | ||||
|  | @ -883,8 +906,18 @@ def change_user_permissions(namespace, repository, username): | |||
|       logger.warning('User tried to remove themselves as admin.') | ||||
|       abort(409) | ||||
| 
 | ||||
|     org_members = model.get_organization_member_set(namespace) | ||||
|     resp = jsonify(role_view_org(perm, perm.user.username in org_members)) | ||||
|     perm_view = role_view(perm) | ||||
| 
 | ||||
|     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) | ||||
|     except model.InvalidOrganizationException: | ||||
|       # This repository is not part of an organization | ||||
|       pass | ||||
| 
 | ||||
|     resp = jsonify(perm_view) | ||||
|     if request.method == 'POST': | ||||
|       resp.status_code = 201 | ||||
|     return resp | ||||
|  |  | |||
		Reference in a new issue