Ability to list teams attached to a project.

This commit is contained in:
Michael DeHaan 2013-04-23 11:26:50 -04:00
parent c661c0bbf2
commit a45a5c2594
4 changed files with 50 additions and 0 deletions

View File

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

View File

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

View File

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

View File

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