mirror of
https://github.com/ansible/awx.git
synced 2026-01-15 03:40:42 -03:30
Ability to list teams attached to a project.
This commit is contained in:
parent
c661c0bbf2
commit
a45a5c2594
@ -63,9 +63,14 @@ class BaseTestMixin(object):
|
||||
|
||||
def make_projects(self, created_by, count=1, playbook_content=''):
|
||||
results = []
|
||||
|
||||
if not os.path.exists(settings.PROJECTS_ROOT):
|
||||
os.makedirs(settings.PROJECTS_ROOT)
|
||||
|
||||
for x in range(0, count):
|
||||
self.object_ctr = self.object_ctr + 1
|
||||
# Create temp project directory.
|
||||
|
||||
project_dir = tempfile.mkdtemp(dir=settings.PROJECTS_ROOT)
|
||||
self._temp_project_dirs.append(project_dir)
|
||||
# Create temp playbook in project (if playbook content is given).
|
||||
|
||||
@ -212,6 +212,24 @@ class ProjectsTest(BaseTest):
|
||||
deleted = self.post(org_teams, data2, expect=204, auth=self.get_normal_credentials())
|
||||
got = self.get(url, expect=404, auth=self.get_normal_credentials())
|
||||
|
||||
|
||||
# =====================================================================
|
||||
# TEAM PROJECTS
|
||||
|
||||
team = Team.objects.filter(organization__pk = 2)[0]
|
||||
team_projects = '/api/v1/teams/%s/projects/' % (team.pk)
|
||||
|
||||
p1 = self.projects[0]
|
||||
team.projects.add(p1)
|
||||
team.save()
|
||||
|
||||
got = self.get(team_projects, expect=200, auth=self.get_super_credentials())
|
||||
|
||||
# FIXME: project postablility tests somewhat incomplete.
|
||||
# add tests to show we can create new projects on the subresource and so on.
|
||||
|
||||
self.assertEquals(got['count'], 1)
|
||||
|
||||
# =====================================================================
|
||||
# TEAMS USER MEMBERSHIP
|
||||
|
||||
|
||||
@ -229,6 +229,31 @@ class TeamsUsersList(BaseSubList):
|
||||
return base
|
||||
raise PermissionDenied()
|
||||
|
||||
|
||||
class TeamsProjectsList(BaseSubList):
|
||||
|
||||
model = Project
|
||||
serializer_class = ProjectSerializer
|
||||
permission_classes = (CustomRbac,)
|
||||
parent_model = Team
|
||||
relationship = 'projects'
|
||||
postable = True
|
||||
inject_primary_key_on_post_as = 'team'
|
||||
severable = True
|
||||
|
||||
# FIXME: filter_fields is no longer used, think we can remove these references everywhere given new custom filtering -- MPD
|
||||
filter_fields = ('name',)
|
||||
|
||||
def _get_queryset(self):
|
||||
team = Team.objects.get(pk=self.kwargs['pk'])
|
||||
base = team.projects.all()
|
||||
if self.request.user.is_superuser or self.request.user in team.organization.admins.all():
|
||||
return base
|
||||
if self.request.user in team.users.all():
|
||||
return base
|
||||
raise PermissionDenied()
|
||||
|
||||
|
||||
class TeamsCredentialsList(BaseSubList):
|
||||
|
||||
model = Credential
|
||||
|
||||
@ -54,6 +54,7 @@ views_TeamsDetail = views.TeamsDetail.as_view()
|
||||
views_TeamsUsersList = views.TeamsUsersList.as_view()
|
||||
views_TeamsCredentialsList = views.TeamsCredentialsList.as_view()
|
||||
views_TeamsCredentialsList = views.TeamsCredentialsList.as_view()
|
||||
views_TeamsProjectsList = views.TeamsProjectsList.as_view()
|
||||
|
||||
# inventory service
|
||||
views_InventoryList = views.InventoryList.as_view()
|
||||
@ -138,6 +139,7 @@ urlpatterns = patterns('',
|
||||
# api/v1/teams/
|
||||
url(r'^api/v1/teams/$', views_TeamsList),
|
||||
url(r'^api/v1/teams/(?P<pk>[0-9]+)/$', views_TeamsDetail),
|
||||
url(r'^api/v1/teams/(?P<pk>[0-9]+)/projects/$', views_TeamsProjectsList),
|
||||
url(r'^api/v1/teams/(?P<pk>[0-9]+)/users/$', views_TeamsUsersList),
|
||||
url(r'^api/v1/teams/(?P<pk>[0-9]+)/credentials/$', views_TeamsCredentialsList),
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user