diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 48f2203521..cf3d957f16 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -1261,6 +1261,9 @@ class CustomInventoryScriptSerializer(BaseSerializer): def get_related(self, obj): res = super(CustomInventoryScriptSerializer, self).get_related(obj) + res.update(dict( + roles = reverse('api:inventory_script_roles_list', args=(obj.pk,)), + )) if obj.organization: res['organization'] = reverse('api:organization_detail', args=(obj.organization.pk,)) diff --git a/awx/api/urls.py b/awx/api/urls.py index c05cf30366..9ed4af3c70 100644 --- a/awx/api/urls.py +++ b/awx/api/urls.py @@ -155,6 +155,7 @@ inventory_update_urls = patterns('awx.api.views', inventory_script_urls = patterns('awx.api.views', url(r'^$', 'inventory_script_list'), url(r'^(?P[0-9]+)/$', 'inventory_script_detail'), + url(r'^(?P[0-9]+)/roles/$', 'inventory_script_roles_list'), ) credential_urls = patterns('awx.api.views', diff --git a/awx/api/views.py b/awx/api/views.py index fc3cf39521..84fd3347e7 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -813,7 +813,7 @@ class OrganizationRolesList(SubListAPIView): def get_queryset(self): po = self.get_parent_object() content_type = ContentType.objects.get_for_model(self.parent_model) - return Role.objects.filter(content_type=content_type, object_id=po.pk).all() + return Role.objects.filter(content_type=content_type, object_id=po.pk) class TeamList(ListCreateAPIView): @@ -1090,7 +1090,7 @@ class ProjectRolesList(SubListAPIView): def get_queryset(self): po = self.get_parent_object() content_type = ContentType.objects.get_for_model(self.parent_model) - return Role.objects.filter(content_type=content_type, object_id=po.pk).all() + return Role.objects.filter(content_type=content_type, object_id=po.pk) class UserList(ListCreateAPIView): @@ -1402,7 +1402,7 @@ class CredentialRolesList(SubListAPIView): def get_queryset(self): po = self.get_parent_object() content_type = ContentType.objects.get_for_model(self.parent_model) - return Role.objects.filter(content_type=content_type, object_id=po.pk).all() + return Role.objects.filter(content_type=content_type, object_id=po.pk) class InventoryScriptList(ListCreateAPIView): @@ -1424,6 +1424,18 @@ class InventoryScriptDetail(RetrieveUpdateDestroyAPIView): inv_src.save() return super(InventoryScriptDetail, self).destroy(request, *args, **kwargs) +class InventoryScriptRolesList(SubListAPIView): + + model = Role + serializer_class = RoleSerializer + parent_model = CustomInventoryScript + new_in_300 = True + + def get_queryset(self): + po = self.get_parent_object() + content_type = ContentType.objects.get_for_model(self.parent_model) + return Role.objects.filter(content_type=content_type, object_id=po.pk) + class InventoryList(ListCreateAPIView): model = Inventory @@ -1484,7 +1496,7 @@ class InventoryRolesList(SubListAPIView): def get_queryset(self): po = self.get_parent_object() content_type = ContentType.objects.get_for_model(self.parent_model) - return Role.objects.filter(content_type=content_type, object_id=po.pk).all() + return Role.objects.filter(content_type=content_type, object_id=po.pk) class InventoryJobTemplateList(SubListAPIView): @@ -1831,7 +1843,7 @@ class GroupRolesList(SubListAPIView): def get_queryset(self): po = self.get_parent_object() content_type = ContentType.objects.get_for_model(self.parent_model) - return Role.objects.filter(content_type=content_type, object_id=po.pk).all() + return Role.objects.filter(content_type=content_type, object_id=po.pk) class InventoryGroupsList(SubListCreateAttachDetachAPIView): @@ -2561,7 +2573,7 @@ class JobTemplateRolesList(SubListAPIView): def get_queryset(self): po = self.get_parent_object() content_type = ContentType.objects.get_for_model(self.parent_model) - return Role.objects.filter(content_type=content_type, object_id=po.pk).all() + return Role.objects.filter(content_type=content_type, object_id=po.pk) class SystemJobTemplateList(ListAPIView):