mirror of
https://github.com/ansible/awx.git
synced 2026-03-06 03:01:06 -03:30
AC-1040 Fix inventory tree view.
This commit is contained in:
@@ -72,7 +72,7 @@ SUMMARIZABLE_FK_FIELDS = {
|
|||||||
'last_job_host_summary': DEFAULT_SUMMARY_FIELDS + ('failed',),
|
'last_job_host_summary': DEFAULT_SUMMARY_FIELDS + ('failed',),
|
||||||
'last_update': DEFAULT_SUMMARY_FIELDS + ('status', 'failed', 'license_error'),
|
'last_update': DEFAULT_SUMMARY_FIELDS + ('status', 'failed', 'license_error'),
|
||||||
'current_update': DEFAULT_SUMMARY_FIELDS + ('status', 'failed', 'license_error'),
|
'current_update': DEFAULT_SUMMARY_FIELDS + ('status', 'failed', 'license_error'),
|
||||||
'inventory_source': ('source', 'last_updated', 'status'),
|
#'inventory_source': ('source', 'last_updated', 'status'),
|
||||||
}
|
}
|
||||||
|
|
||||||
class ChoiceField(fields.ChoiceField):
|
class ChoiceField(fields.ChoiceField):
|
||||||
@@ -654,7 +654,8 @@ class GroupTreeSerializer(GroupSerializer):
|
|||||||
if obj is None:
|
if obj is None:
|
||||||
return {}
|
return {}
|
||||||
children_qs = obj.children.filter(active=True)
|
children_qs = obj.children.filter(active=True)
|
||||||
children_qs = children_qs.select_related('inventory', 'inventory_source')
|
children_qs = children_qs.select_related('inventory')
|
||||||
|
children_qs = children_qs.prefetch_related('inventory_source')
|
||||||
return GroupTreeSerializer(children_qs, many=True).data
|
return GroupTreeSerializer(children_qs, many=True).data
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1152,7 +1152,8 @@ class InventoryTreeView(RetrieveAPIView):
|
|||||||
def retrieve(self, request, *args, **kwargs):
|
def retrieve(self, request, *args, **kwargs):
|
||||||
inventory = self.get_object()
|
inventory = self.get_object()
|
||||||
groups_qs = inventory.root_groups.filter(active=True)
|
groups_qs = inventory.root_groups.filter(active=True)
|
||||||
groups_qs = groups_qs.select_related('inventory', 'inventory_source')
|
groups_qs = groups_qs.select_related('inventory')
|
||||||
|
groups_qs = groups_qs.prefetch_related('inventory_source')
|
||||||
data = GroupTreeSerializer(groups_qs, many=True).data
|
data = GroupTreeSerializer(groups_qs, many=True).data
|
||||||
return Response(data)
|
return Response(data)
|
||||||
|
|
||||||
|
|||||||
@@ -396,8 +396,8 @@ class GroupAccess(BaseAccess):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
qs = self.model.objects.filter(active=True).distinct()
|
qs = self.model.objects.filter(active=True).distinct()
|
||||||
qs = qs.select_related('created_by', 'inventory')#, 'inventory_source')
|
qs = qs.select_related('created_by', 'inventory')
|
||||||
qs = qs.prefetch_related('parents', 'children')
|
qs = qs.prefetch_related('parents', 'children', 'inventory_source')
|
||||||
inventories_qs = self.user.get_queryset(Inventory)
|
inventories_qs = self.user.get_queryset(Inventory)
|
||||||
return qs.filter(inventory__in=inventories_qs)
|
return qs.filter(inventory__in=inventories_qs)
|
||||||
|
|
||||||
|
|||||||
@@ -807,11 +807,15 @@ class InventoryTest(BaseTest):
|
|||||||
def test_get_inventory_tree_view(self):
|
def test_get_inventory_tree_view(self):
|
||||||
# Group A is parent of B, B is parent of C, C is parent of D.
|
# Group A is parent of B, B is parent of C, C is parent of D.
|
||||||
g_a = self.inventory_a.groups.create(name='A')
|
g_a = self.inventory_a.groups.create(name='A')
|
||||||
|
g_a.inventory_source
|
||||||
g_b = self.inventory_a.groups.create(name='B')
|
g_b = self.inventory_a.groups.create(name='B')
|
||||||
|
g_b.inventory_source
|
||||||
g_b.parents.add(g_a)
|
g_b.parents.add(g_a)
|
||||||
g_c = self.inventory_a.groups.create(name='C')
|
g_c = self.inventory_a.groups.create(name='C')
|
||||||
|
g_c.inventory_source
|
||||||
g_c.parents.add(g_b)
|
g_c.parents.add(g_b)
|
||||||
g_d = self.inventory_a.groups.create(name='D')
|
g_d = self.inventory_a.groups.create(name='D')
|
||||||
|
g_d.inventory_source
|
||||||
g_d.parents.add(g_c)
|
g_d.parents.add(g_c)
|
||||||
|
|
||||||
url = reverse('api:inventory_tree_view', args=(self.inventory_a.pk,))
|
url = reverse('api:inventory_tree_view', args=(self.inventory_a.pk,))
|
||||||
|
|||||||
Reference in New Issue
Block a user