From 2c533edb3c97a746b0a6c657892415f19864d520 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Wed, 8 May 2019 10:58:13 -0400 Subject: [PATCH] remove duplicates from IG list --- awx/main/access.py | 2 +- .../tests/functional/test_rbac_instance_groups.py | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/awx/main/access.py b/awx/main/access.py index 64933995bb..1bce7f4f54 100644 --- a/awx/main/access.py +++ b/awx/main/access.py @@ -538,7 +538,7 @@ class InstanceGroupAccess(BaseAccess): def filtered_queryset(self): return InstanceGroup.objects.filter( - organization__in=Organization.accessible_pk_qs(self.user, 'admin_role')) + organization__in=Organization.accessible_pk_qs(self.user, 'admin_role')).distinct() def can_add(self, data): return self.user.is_superuser diff --git a/awx/main/tests/functional/test_rbac_instance_groups.py b/awx/main/tests/functional/test_rbac_instance_groups.py index 2021f537ca..ae2a143340 100644 --- a/awx/main/tests/functional/test_rbac_instance_groups.py +++ b/awx/main/tests/functional/test_rbac_instance_groups.py @@ -6,6 +6,7 @@ from awx.main.access import ( InventoryAccess, JobTemplateAccess, ) +from awx.main.models import Organization @pytest.mark.django_db @@ -36,6 +37,16 @@ def test_ig_normal_user_associability(organization, default_instance_group, user assert not access.can_attach(organization, default_instance_group, 'instance_groups', None) +@pytest.mark.django_db +def test_access_via_two_organizations(rando, default_instance_group): + for org_name in ['org1', 'org2']: + org = Organization.objects.create(name=org_name) + org.instance_groups.add(default_instance_group) + org.admin_role.members.add(rando) + access = InstanceGroupAccess(rando) + assert list(access.get_queryset()) == [default_instance_group] + + @pytest.mark.django_db def test_ig_associability(organization, default_instance_group, admin, system_auditor, org_admin, org_member, job_template_factory): admin_access = OrganizationAccess(admin) @@ -53,7 +64,7 @@ def test_ig_associability(organization, default_instance_group, admin, system_au assert not oadmin_access.can_unattach(organization, default_instance_group, 'instance_groups', None) assert not auditor_access.can_unattach(organization, default_instance_group, 'instance_groups', None) assert not omember_access.can_unattach(organization, default_instance_group, 'instance_groups', None) - + objects = job_template_factory('jt', organization=organization, project='p', inventory='i', credential='c') admin_access = InventoryAccess(admin) @@ -75,5 +86,3 @@ def test_ig_associability(organization, default_instance_group, admin, system_au assert oadmin_access.can_attach(objects.job_template, default_instance_group, 'instance_groups', None) assert not auditor_access.can_attach(objects.job_template, default_instance_group, 'instance_groups', None) assert not omember_access.can_attach(objects.job_template, default_instance_group, 'instance_groups', None) - -