mirror of
https://github.com/ansible/awx.git
synced 2026-05-09 18:37:36 -02:30
Start of projects (+teams/credentials/permissions) tests.
This commit is contained in:
@@ -542,6 +542,8 @@ class Project(CommonModel):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Permission(CommonModelNameNotUnique):
|
class Permission(CommonModelNameNotUnique):
|
||||||
'''
|
'''
|
||||||
A permission allows a user, project, or team to be able to use an inventory source.
|
A permission allows a user, project, or team to be able to use an inventory source.
|
||||||
|
|||||||
@@ -19,5 +19,6 @@
|
|||||||
from lib.main.tests.organizations import OrganizationsTest
|
from lib.main.tests.organizations import OrganizationsTest
|
||||||
from lib.main.tests.users import UsersTest
|
from lib.main.tests.users import UsersTest
|
||||||
from lib.main.tests.inventory import InventoryTest
|
from lib.main.tests.inventory import InventoryTest
|
||||||
|
from lib.main.tests.projects import ProjectsTest
|
||||||
from lib.main.tests.commands import AcomInventoryTest
|
from lib.main.tests.commands import AcomInventoryTest
|
||||||
from lib.main.tests.tasks import RunLaunchJobTest
|
from lib.main.tests.tasks import RunLaunchJobTest
|
||||||
|
|||||||
@@ -146,6 +146,30 @@ class OrganizationsTagsList(BaseSubList):
|
|||||||
raise PermissionDenied()
|
raise PermissionDenied()
|
||||||
return Tag.objects.filter(organization_by_tag__in = [ organization ])
|
return Tag.objects.filter(organization_by_tag__in = [ organization ])
|
||||||
|
|
||||||
|
class ProjectsList(BaseList):
|
||||||
|
|
||||||
|
model = Project
|
||||||
|
serializer_class = ProjectSerializer
|
||||||
|
permission_classes = (CustomRbac,)
|
||||||
|
|
||||||
|
# I can see a project if
|
||||||
|
# I am a superuser
|
||||||
|
# I am an admin of the organization that contains the project
|
||||||
|
# I am a member of a team that also contains the project
|
||||||
|
|
||||||
|
def _get_queryset(self):
|
||||||
|
''' I can see organizations when I am a superuser, or I am an admin or user in that organization '''
|
||||||
|
base = Project.objects
|
||||||
|
if self.request.user.is_superuser:
|
||||||
|
return base.all()
|
||||||
|
my_teams = Team.objects.filter(users__in = [ self.request.user])
|
||||||
|
my_orgs = Organization.objects.filter(admins__in = [ self.request.user ])
|
||||||
|
return base.filter(
|
||||||
|
teams__in = my_teams
|
||||||
|
).distinct() | base.filter(
|
||||||
|
organizations__in = my_orgs
|
||||||
|
).distinct()
|
||||||
|
|
||||||
class ProjectsDetail(BaseDetail):
|
class ProjectsDetail(BaseDetail):
|
||||||
|
|
||||||
model = Project
|
model = Project
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ views_UsersOrganizationsList = views.UsersOrganizationsList.as_view()
|
|||||||
views_UsersAdminOrganizationsList = views.UsersAdminOrganizationsList.as_view()
|
views_UsersAdminOrganizationsList = views.UsersAdminOrganizationsList.as_view()
|
||||||
|
|
||||||
# projects service
|
# projects service
|
||||||
views_ProjectsDetail = views.OrganizationsDetail.as_view()
|
views_ProjectsList = views.ProjectsList.as_view()
|
||||||
|
views_ProjectsDetail = views.ProjectsDetail.as_view()
|
||||||
|
|
||||||
# audit trail service
|
# audit trail service
|
||||||
|
|
||||||
@@ -75,7 +76,7 @@ views_TagsDetail = views.TagsDetail.as_view()
|
|||||||
|
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
|
|
||||||
# organizations service
|
# organizations vice
|
||||||
url(r'^api/v1/organizations/$', views_OrganizationsList),
|
url(r'^api/v1/organizations/$', views_OrganizationsList),
|
||||||
url(r'^api/v1/organizations/(?P<pk>[0-9]+)/$', views_OrganizationsDetail),
|
url(r'^api/v1/organizations/(?P<pk>[0-9]+)/$', views_OrganizationsDetail),
|
||||||
url(r'^api/v1/organizations/(?P<pk>[0-9]+)/audit_trail/$', views_OrganizationsAuditTrailList),
|
url(r'^api/v1/organizations/(?P<pk>[0-9]+)/audit_trail/$', views_OrganizationsAuditTrailList),
|
||||||
@@ -93,6 +94,7 @@ urlpatterns = patterns('',
|
|||||||
url(r'^api/v1/users/(?P<pk>[0-9]+)/admin_of_organizations/$', views_UsersAdminOrganizationsList),
|
url(r'^api/v1/users/(?P<pk>[0-9]+)/admin_of_organizations/$', views_UsersAdminOrganizationsList),
|
||||||
|
|
||||||
# projects service
|
# projects service
|
||||||
|
url(r'^api/v1/projects/$', views_ProjectsList),
|
||||||
url(r'^api/v1/projects/(?P<pk>[0-9]+)/$', views_ProjectsDetail),
|
url(r'^api/v1/projects/(?P<pk>[0-9]+)/$', views_ProjectsDetail),
|
||||||
|
|
||||||
# audit trail service
|
# audit trail service
|
||||||
|
|||||||
Reference in New Issue
Block a user