diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 05fe7bf426..08098b0f04 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -329,7 +329,6 @@ class BaseSerializer(serializers.ModelSerializer): 'id': role.id, 'name': role.name, 'description': role.description, - 'url': role.get_absolute_url(), } if len(roles) > 0: summary_fields['roles'] = roles @@ -512,6 +511,8 @@ class UnifiedJobTemplateSerializer(BaseSerializer): res['last_job'] = obj.last_job.get_absolute_url() if obj.next_schedule: res['next_schedule'] = obj.next_schedule.get_absolute_url() + res['roles'] = reverse('api:job_template_roles_list', args=(obj.pk,)) + return res def get_types(self): @@ -1510,7 +1511,7 @@ class ResourceAccessListElementSerializer(UserSerializer): role_dict['related'] = reverse_gfk(role.content_object) except: pass - return { 'role': role_dict, 'active_roles': get_roles_on_resource(obj, role)} + return { 'role': role_dict, 'descendant_roles': get_roles_on_resource(obj, role)} def format_team_role_perm(team_role, permissive_role_ids): role = team_role.children.filter(id__in=permissive_role_ids)[0] @@ -1528,7 +1529,7 @@ class ResourceAccessListElementSerializer(UserSerializer): role_dict['related'] = reverse_gfk(role.content_object) except: pass - return { 'role': role_dict, 'active_roles': get_roles_on_resource(obj, team_role)} + return { 'role': role_dict, 'descendant_roles': get_roles_on_resource(obj, team_role)} team_content_type = ContentType.objects.get_for_model(Team) content_type = ContentType.objects.get_for_model(obj) diff --git a/awx/api/urls.py b/awx/api/urls.py index 9d54a0a0fe..7759b4a609 100644 --- a/awx/api/urls.py +++ b/awx/api/urls.py @@ -182,6 +182,7 @@ job_template_urls = patterns('awx.api.views', url(r'^(?P[0-9]+)/notification_templates_error/$', 'job_template_notification_templates_error_list'), url(r'^(?P[0-9]+)/notification_templates_success/$', 'job_template_notification_templates_success_list'), url(r'^(?P[0-9]+)/access_list/$', 'job_template_access_list'), + url(r'^(?P[0-9]+)/roles/$', 'job_template_roles_list'), url(r'^(?P[0-9]+)/labels/$', 'job_template_label_list'), ) diff --git a/awx/api/views.py b/awx/api/views.py index dec0adfd75..cca55961ea 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -2480,6 +2480,18 @@ class JobTemplateAccessList(ResourceAccessList): resource_model = JobTemplate new_in_300 = True +class JobTemplateRolesList(SubListAPIView): + + model = Role + serializer_class = RoleSerializer + parent_model = JobTemplate + new_in_300 = True + + def get_queryset(self): + jt = self.get_parent_object() + content_type = ContentType.objects.get_for_model(JobTemplate) + return Role.objects.filter(content_type=content_type, object_id=jt.pk).all() + class SystemJobTemplateList(ListAPIView): model = SystemJobTemplate