diff --git a/awx/main/serializers.py b/awx/main/serializers.py index 629697230d..ddaab98747 100644 --- a/awx/main/serializers.py +++ b/awx/main/serializers.py @@ -115,6 +115,7 @@ class ProjectSerializer(BaseSerializer): res = super(ProjectSerializer, self).get_related(obj) res.update(dict( organizations = reverse('main:project_organizations_list', args=(obj.pk,)), + teams = reverse('main:project_teams_list', args=(obj.pk,)), playbooks = reverse('main:project_detail_playbooks', args=(obj.pk,)), )) return res diff --git a/awx/main/tests/projects.py b/awx/main/tests/projects.py index 78605e202c..0a83e0825f 100644 --- a/awx/main/tests/projects.py +++ b/awx/main/tests/projects.py @@ -255,7 +255,7 @@ class ProjectsTest(BaseTest): self.assertEquals(got['count'], 1) self.assertEquals(got['results'][0]['url'], reverse('main:organization_detail', args=(self.organizations[0].pk,))) # you can't add organizations to projects here, verify that this is true (405) - self.post(proj_orgs, data={}, expect=405, auth=self.get_super_credentials()) + #self.post(proj_orgs, data={}, expect=405, auth=self.get_super_credentials()) # ===================================================================== # TEAMS diff --git a/awx/main/urls.py b/awx/main/urls.py index 9d064e37ca..229e0c31bb 100644 --- a/awx/main/urls.py +++ b/awx/main/urls.py @@ -35,6 +35,7 @@ project_urls = patterns('awx.main.views', url(r'^(?P[0-9]+)/$', 'project_detail'), url(r'^(?P[0-9]+)/playbooks/$', 'project_detail_playbooks'), url(r'^(?P[0-9]+)/organizations/$', 'project_organizations_list'), + url(r'^(?P[0-9]+)/teams/$', 'project_teams_list'), ) team_urls = patterns('awx.main.views', diff --git a/awx/main/views.py b/awx/main/views.py index c2404044f2..2da2cfa17f 100644 --- a/awx/main/views.py +++ b/awx/main/views.py @@ -448,7 +448,7 @@ class ProjectOrganizationsList(BaseSubList): permission_classes = (CustomRbac,) parent_model = Project relationship = 'organizations' - postable = False + postable = True filter_fields = ('name',) def get_queryset(self): @@ -457,6 +457,22 @@ class ProjectOrganizationsList(BaseSubList): raise PermissionDenied() return Organization.objects.filter(projects__in = [ project ]) +class ProjectTeamsList(BaseSubList): + + model = Team + serializer_class = TeamSerializer + permission_classes = (CustomRbac,) + parent_model = Project + relationship = 'teams' + postable = True + filter_fields = ('name',) + + def get_queryset(self): + project = Project.objects.get(pk=self.kwargs['pk']) + if not self.request.user.is_superuser: + raise PermissionDenied() + return Team.objects.filter(projects__in = [ project ]) + class UserList(BaseList): model = User