Ability to list teams and get individual team records.

This commit is contained in:
Michael DeHaan 2013-03-31 22:18:39 -04:00
parent 987abb1663
commit 941d605806
3 changed files with 37 additions and 0 deletions

View File

@ -507,6 +507,10 @@ class Team(CommonModel):
users = models.ManyToManyField('auth.User', blank=True, related_name='teams')
organizations = models.ManyToManyField('Organization', related_name='teams')
def get_absolute_url(self):
import lib.urls
return reverse(lib.urls.views_TeamsDetail, args=(self.pk,))
class Project(CommonModel):
'''
A project represents a playbook git repo that can access a set of inventories

View File

@ -146,6 +146,34 @@ class OrganizationsTagsList(BaseSubList):
raise PermissionDenied()
return Tag.objects.filter(organization_by_tag__in = [ organization ])
class TeamsList(BaseList):
model = Team
serializer_class = TeamSerializer
permission_classes = (CustomRbac,)
# I can see a team if:
# I am a superuser
# I am an admin of the organization that the team is
# I am on that team
def _get_queryset(self):
''' I can see organizations when I am a superuser, or I am an admin or user in that organization '''
base = Team.objects
if self.request.user.is_superuser:
return base.all()
return base.filter(
admins__in = [ self.request.user ]
).distinct() | base.filter(
users__in = [ self.request.user ]
).distinct()
class TeamsDetail(BaseDetail):
model = Team
serializer_class = TeamSerializer
permission_classes = (CustomRbac,)
class ProjectsList(BaseList):
model = Project

View File

@ -44,6 +44,8 @@ views_ProjectsOrganizationsList = views.ProjectsOrganizationsList.as_view()
# audit trail service
# team service
views_TeamsList = views.TeamsList.as_view()
views_TeamsDetail = views.TeamsDetail.as_view()
# inventory service
views_InventoryList = views.InventoryList.as_view()
@ -106,6 +108,9 @@ urlpatterns = patterns('',
# team service
# api/v1/teams/
url(r'^api/v1/teams/$', views_TeamsList),
url(r'^api/v1/teams/(?P<pk>[0-9]+)/$', views_TeamsDetail),
# api/v1/teams/N/
# api/v1/teams/N/users/