mirror of
https://github.com/ansible/awx.git
synced 2026-05-19 14:57:39 -02:30
Add a /api/v1/me URL, which is a quick way to find your user record.
This commit is contained in:
@@ -140,8 +140,24 @@ class UsersTest(BaseTest):
|
|||||||
data = self.delete(url3, expect=403, auth=self.get_other_credentials())
|
data = self.delete(url3, expect=403, auth=self.get_other_credentials())
|
||||||
|
|
||||||
def test_there_exists_an_obvious_url_where_a_user_may_find_his_user_record(self):
|
def test_there_exists_an_obvious_url_where_a_user_may_find_his_user_record(self):
|
||||||
#self.assertTrue(False)
|
url = '/api/v1/me/'
|
||||||
pass
|
data = self.get(url, expect=401, auth=None)
|
||||||
|
data = self.get(url, expect=401, auth=self.get_invalid_credentials())
|
||||||
|
data = self.get(url, expect=200, auth=self.get_normal_credentials())
|
||||||
|
self.assertEquals(data['results'][0]['username'], 'normal')
|
||||||
|
self.assertEquals(data['count'], 1)
|
||||||
|
data = self.get(url, expect=200, auth=self.get_other_credentials())
|
||||||
|
self.assertEquals(data['results'][0]['username'], 'other')
|
||||||
|
self.assertEquals(data['count'], 1)
|
||||||
|
data = self.get(url, expect=200, auth=self.get_super_credentials())
|
||||||
|
self.assertEquals(data['results'][0]['username'], 'admin')
|
||||||
|
self.assertEquals(data['count'], 1)
|
||||||
|
|
||||||
|
# TODO:
|
||||||
|
# possibly nice to have, some quick lookup functions that are not postable:
|
||||||
|
# /users/2/organizations
|
||||||
|
# /users/2/projects
|
||||||
|
# /users/2/teams
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -180,6 +180,19 @@ class UsersList(BaseList):
|
|||||||
same_team = base.filter(teams__in = self.request.user.teams.all()).distinct()
|
same_team = base.filter(teams__in = self.request.user.teams.all()).distinct()
|
||||||
return mine | admin_of | same_team
|
return mine | admin_of | same_team
|
||||||
|
|
||||||
|
class UsersMeList(BaseList):
|
||||||
|
|
||||||
|
model = User
|
||||||
|
serializer_class = UserSerializer
|
||||||
|
permission_classes = (CustomRbac,)
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
raise PermissionDenied()
|
||||||
|
|
||||||
|
def _get_queryset(self):
|
||||||
|
''' a quick way to find my user record '''
|
||||||
|
return User.objects.filter(pk=self.request.user.pk)
|
||||||
|
|
||||||
class UsersDetail(BaseDetail):
|
class UsersDetail(BaseDetail):
|
||||||
|
|
||||||
model = User
|
model = User
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ views_OrganizationsTagsList = views.OrganizationsTagsList.as_view()
|
|||||||
# users service
|
# users service
|
||||||
views_UsersList = views.UsersList.as_view()
|
views_UsersList = views.UsersList.as_view()
|
||||||
views_UsersDetail = views.UsersDetail.as_view()
|
views_UsersDetail = views.UsersDetail.as_view()
|
||||||
|
views_UsersMeList = views.UsersMeList.as_view()
|
||||||
|
|
||||||
# projects service
|
# projects service
|
||||||
views_ProjectsDetail = views.OrganizationsDetail.as_view()
|
views_ProjectsDetail = views.OrganizationsDetail.as_view()
|
||||||
@@ -67,11 +68,10 @@ urlpatterns = patterns('',
|
|||||||
url(r'^api/v1/organizations/(?P<pk>[0-9]+)/projects/$', views_OrganizationsProjectsList),
|
url(r'^api/v1/organizations/(?P<pk>[0-9]+)/projects/$', views_OrganizationsProjectsList),
|
||||||
url(r'^api/v1/organizations/(?P<pk>[0-9]+)/tags/$', views_OrganizationsTagsList),
|
url(r'^api/v1/organizations/(?P<pk>[0-9]+)/tags/$', views_OrganizationsTagsList),
|
||||||
|
|
||||||
# FIXME: implement:
|
|
||||||
|
|
||||||
# users service
|
# users service
|
||||||
url(r'^api/v1/users/$', views_UsersList),
|
url(r'^api/v1/users/$', views_UsersList),
|
||||||
url(r'^api/v1/users/(?P<pk>[0-9]+)/$', views_UsersDetail),
|
url(r'^api/v1/users/(?P<pk>[0-9]+)/$', views_UsersDetail),
|
||||||
|
url(r'^api/v1/me/$', views_UsersMeList),
|
||||||
|
|
||||||
# projects service
|
# projects service
|
||||||
url(r'^api/v1/projects/(?P<pk>[0-9]+)/$', views_ProjectsDetail),
|
url(r'^api/v1/projects/(?P<pk>[0-9]+)/$', views_ProjectsDetail),
|
||||||
|
|||||||
Reference in New Issue
Block a user