diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 735d7b258e..4d420f0829 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -570,6 +570,7 @@ class GroupTreeSerializer(GroupSerializer): if obj is None: return {} children_qs = obj.children.filter(active=True) + children_qs = children_qs.select_related('inventory', 'inventory_source') return GroupTreeSerializer(children_qs, many=True).data diff --git a/awx/api/views.py b/awx/api/views.py index 0101251a24..69f83c5f55 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -790,6 +790,7 @@ class InventoryTreeView(RetrieveAPIView): def retrieve(self, request, *args, **kwargs): inventory = self.get_object() groups_qs = inventory.root_groups.filter(active=True) + groups_qs = groups_qs.select_related('inventory', 'inventory_source') data = GroupTreeSerializer(groups_qs, many=True).data return Response(data) diff --git a/awx/main/access.py b/awx/main/access.py index 5c88900297..292ecb4e5c 100644 --- a/awx/main/access.py +++ b/awx/main/access.py @@ -389,7 +389,7 @@ class GroupAccess(BaseAccess): def get_queryset(self): qs = self.model.objects.filter(active=True).distinct() - qs = qs.select_related('created_by', 'inventory') + qs = qs.select_related('created_by', 'inventory', 'inventory_source') qs = qs.prefetch_related('parents', 'children') inventories_qs = self.user.get_queryset(Inventory) return qs.filter(inventory__in=inventories_qs) @@ -443,7 +443,7 @@ class InventorySourceAccess(BaseAccess): def get_queryset(self): qs = self.model.objects.filter(active=True).distinct() - qs = qs.select_related('created_by', 'group') + qs = qs.select_related('created_by', 'group', 'inventory') inventories_qs = self.user.get_queryset(Inventory) return qs.filter(Q(inventory__in=inventories_qs) | Q(group__inventory__in=inventories_qs)) @@ -482,7 +482,8 @@ class InventoryUpdateAccess(BaseAccess): def get_queryset(self): qs = InventoryUpdate.objects.filter(active=True).distinct() - qs = qs.select_related('created_by', 'group') + qs = qs.select_related('created_by', 'inventory_source__group', + 'inventory_source__inventory') inventory_sources_qs = self.user.get_queryset(InventorySource) return qs.filter(inventory_source__in=inventory_sources_qs)