mirror of
https://github.com/ansible/awx.git
synced 2026-05-21 07:47:44 -02:30
Allow post to /api/v1/projects/N/organizations/, add resource for /api/v1/projects/N/teams/.
This commit is contained in:
@@ -115,6 +115,7 @@ class ProjectSerializer(BaseSerializer):
|
|||||||
res = super(ProjectSerializer, self).get_related(obj)
|
res = super(ProjectSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
organizations = reverse('main:project_organizations_list', args=(obj.pk,)),
|
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,)),
|
playbooks = reverse('main:project_detail_playbooks', args=(obj.pk,)),
|
||||||
))
|
))
|
||||||
return res
|
return res
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ class ProjectsTest(BaseTest):
|
|||||||
self.assertEquals(got['count'], 1)
|
self.assertEquals(got['count'], 1)
|
||||||
self.assertEquals(got['results'][0]['url'], reverse('main:organization_detail', args=(self.organizations[0].pk,)))
|
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)
|
# 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
|
# TEAMS
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ project_urls = patterns('awx.main.views',
|
|||||||
url(r'^(?P<pk>[0-9]+)/$', 'project_detail'),
|
url(r'^(?P<pk>[0-9]+)/$', 'project_detail'),
|
||||||
url(r'^(?P<pk>[0-9]+)/playbooks/$', 'project_detail_playbooks'),
|
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]+)/organizations/$', 'project_organizations_list'),
|
||||||
|
url(r'^(?P<pk>[0-9]+)/teams/$', 'project_teams_list'),
|
||||||
)
|
)
|
||||||
|
|
||||||
team_urls = patterns('awx.main.views',
|
team_urls = patterns('awx.main.views',
|
||||||
|
|||||||
@@ -448,7 +448,7 @@ class ProjectOrganizationsList(BaseSubList):
|
|||||||
permission_classes = (CustomRbac,)
|
permission_classes = (CustomRbac,)
|
||||||
parent_model = Project
|
parent_model = Project
|
||||||
relationship = 'organizations'
|
relationship = 'organizations'
|
||||||
postable = False
|
postable = True
|
||||||
filter_fields = ('name',)
|
filter_fields = ('name',)
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
@@ -457,6 +457,22 @@ class ProjectOrganizationsList(BaseSubList):
|
|||||||
raise PermissionDenied()
|
raise PermissionDenied()
|
||||||
return Organization.objects.filter(projects__in = [ project ])
|
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):
|
class UserList(BaseList):
|
||||||
|
|
||||||
model = User
|
model = User
|
||||||
|
|||||||
Reference in New Issue
Block a user