Allow post to /api/v1/projects/N/organizations/, add resource for /api/v1/projects/N/teams/.

This commit is contained in:
Chris Church
2013-07-19 11:43:05 -04:00
parent 549ba9a150
commit 9af163691a
4 changed files with 20 additions and 2 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -35,6 +35,7 @@ project_urls = patterns('awx.main.views',
url(r'^(?P<pk>[0-9]+)/$', 'project_detail'),
url(r'^(?P<pk>[0-9]+)/playbooks/$', 'project_detail_playbooks'),
url(r'^(?P<pk>[0-9]+)/organizations/$', 'project_organizations_list'),
url(r'^(?P<pk>[0-9]+)/teams/$', 'project_teams_list'),
)
team_urls = patterns('awx.main.views',

View File

@@ -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