Fix access list to return complete team role list

We were just returning the first element before, dur.

 Fixes #1932
This commit is contained in:
Akita Noek
2016-05-19 16:37:06 -04:00
parent 150c98de18
commit 10cb04ae80

View File

@@ -1519,8 +1519,8 @@ class ResourceAccessListElementSerializer(UserSerializer):
return { 'role': role_dict, 'descendant_roles': get_roles_on_resource(obj, role)} return { 'role': role_dict, 'descendant_roles': get_roles_on_resource(obj, role)}
def format_team_role_perm(team_role, permissive_role_ids): def format_team_role_perm(team_role, permissive_role_ids):
role = team_role.children.filter(id__in=permissive_role_ids)[0] ret = []
for role in team_role.children.filter(id__in=permissive_role_ids).all():
role_dict = { role_dict = {
'id': role.id, 'id': role.id,
'name': role.name, 'name': role.name,
@@ -1534,7 +1534,8 @@ class ResourceAccessListElementSerializer(UserSerializer):
role_dict['related'] = reverse_gfk(role.content_object) role_dict['related'] = reverse_gfk(role.content_object)
except: except:
pass pass
return { 'role': role_dict, 'descendant_roles': get_roles_on_resource(obj, team_role)} ret.append({ 'role': role_dict, 'descendant_roles': get_roles_on_resource(obj, team_role)})
return ret
team_content_type = ContentType.objects.get_for_model(Team) team_content_type = ContentType.objects.get_for_model(Team)
content_type = ContentType.objects.get_for_model(obj) content_type = ContentType.objects.get_for_model(obj)
@@ -1575,11 +1576,11 @@ class ResourceAccessListElementSerializer(UserSerializer):
ret['summary_fields']['direct_access'] \ ret['summary_fields']['direct_access'] \
= [format_role_perm(r) for r in direct_access_roles.distinct()] \ = [format_role_perm(r) for r in direct_access_roles.distinct()] \
+ [format_team_role_perm(r, direct_permissive_role_ids) for r in direct_team_roles.distinct()] + [y for x in (format_team_role_perm(r, direct_permissive_role_ids) for r in direct_team_roles.distinct()) for y in x]
ret['summary_fields']['indirect_access'] \ ret['summary_fields']['indirect_access'] \
= [format_role_perm(r) for r in indirect_access_roles.distinct()] \ = [format_role_perm(r) for r in indirect_access_roles.distinct()] \
+ [format_team_role_perm(r, all_permissive_role_ids) for r in indirect_team_roles.distinct()] + [y for x in (format_team_role_perm(r, all_permissive_role_ids) for r in indirect_team_roles.distinct()) for y in x]
return ret return ret