diff --git a/awx/main/serializers.py b/awx/main/serializers.py index 36d5acdae6..85bfe9a590 100644 --- a/awx/main/serializers.py +++ b/awx/main/serializers.py @@ -55,6 +55,7 @@ SUMMARIZABLE_FK_FIELDS = { 'last_job_host_summary': DEFAULT_SUMMARY_FIELDS + ('failed',), 'last_update': DEFAULT_SUMMARY_FIELDS + ('status', 'failed',), 'current_update': DEFAULT_SUMMARY_FIELDS + ('status', 'failed',), + 'inventory_source': ('source', 'last_updated', 'status'), } class BaseSerializer(serializers.ModelSerializer): @@ -452,6 +453,7 @@ class InventorySerializer(BaseSerializerWithVariables): script = reverse('main:inventory_script_view', args=(obj.pk,)), tree = reverse('main:inventory_tree_view', args=(obj.pk,)), organization = reverse('main:organization_detail', args=(obj.organization.pk,)), + inventory_sources = reverse('main:inventory_inventory_sources_list', args=(obj.pk,)), )) return res diff --git a/awx/main/urls.py b/awx/main/urls.py index 99109b5235..3282645ab8 100644 --- a/awx/main/urls.py +++ b/awx/main/urls.py @@ -63,6 +63,7 @@ inventory_urls = patterns('awx.main.views', url(r'^(?P[0-9]+)/variable_data/$', 'inventory_variable_data'), url(r'^(?P[0-9]+)/script/$', 'inventory_script_view'), url(r'^(?P[0-9]+)/tree/$', 'inventory_tree_view'), + url(r'^(?P[0-9]+)/inventory_sources/$', 'inventory_inventory_sources_list'), ) host_urls = patterns('awx.main.views', diff --git a/awx/main/views.py b/awx/main/views.py index 9a8bb3718a..4c247369cc 100644 --- a/awx/main/views.py +++ b/awx/main/views.py @@ -696,6 +696,21 @@ class InventoryTreeView(RetrieveAPIView): }) return d +class InventoryInventorySourcesList(SubListAPIView): + + model = InventorySource + serializer_class = InventorySourceSerializer + parent_model = Inventory + relationship = None # Not defined since using get_queryset(). + view_name = 'Inventory Source List' + new_in_14 = True + + def get_queryset(self): + parent = self.get_parent_object() + self.check_parent_access(parent) + qs = self.request.user.get_queryset(self.model) + return qs.filter(group__inventory__pk=parent.pk) + class InventorySourceDetail(RetrieveUpdateAPIView): model = InventorySource