mirror of
https://github.com/ansible/awx.git
synced 2026-03-17 08:57:33 -02:30
Admin updates, added a few more related resources.
This commit is contained in:
@@ -329,7 +329,6 @@ class JobAdmin(BaseModelAdmin):
|
||||
'classes': ('collapse',)}),
|
||||
(_('Start Job'), {'fields': ('start_job', 'ssh_password',
|
||||
'sudo_password', 'ssh_key_unlock')}),
|
||||
#(_('Cancel Job'), {'fields': ('cancel_job',)}),
|
||||
#(_('Tags'), {'fields': ('tags',)}),
|
||||
(_('Audit Trail'), {'fields': ('creation_date', 'created_by',
|
||||
'audit_trail',)}),
|
||||
|
||||
@@ -23,16 +23,12 @@ class CustomFilterBackend(object):
|
||||
|
||||
def filter_queryset(self, request, queryset, view):
|
||||
|
||||
keys = request.GET.keys()
|
||||
|
||||
terms = {}
|
||||
order_by = None
|
||||
|
||||
for key in keys:
|
||||
for key, value in request.GET.items():
|
||||
|
||||
value = request.GET[key]
|
||||
|
||||
if key in [ 'page', 'page_size' ]:
|
||||
if key in [ 'page', 'page_size', 'format' ]:
|
||||
continue
|
||||
|
||||
if key == 'order_by':
|
||||
|
||||
@@ -42,7 +42,8 @@ class OrganizationSerializer(BaseSerializer):
|
||||
|
||||
res = dict(
|
||||
audit_trail = reverse('main:organizations_audit_trail_list', args=(obj.pk,)),
|
||||
projects = reverse('main:organizations_projects_list', args=(obj.pk,)),
|
||||
projects = reverse('main:organizations_projects_list', args=(obj.pk,)),
|
||||
inventories = reverse('main:organizations_inventories_list', args=(obj.pk,)),
|
||||
users = reverse('main:organizations_users_list', args=(obj.pk,)),
|
||||
admins = reverse('main:organizations_admins_list', args=(obj.pk,)),
|
||||
tags = reverse('main:organizations_tags_list', args=(obj.pk,)),
|
||||
@@ -96,12 +97,12 @@ class InventorySerializer(BaseSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Inventory
|
||||
fields = ('url', 'id', 'name', 'description', 'creation_date', 'organization')
|
||||
fields = ('url', 'id', 'name', 'description', 'creation_date', 'related')
|
||||
|
||||
def get_related(self, obj):
|
||||
res = dict(
|
||||
hosts = reverse('main:hosts_list', args=(obj.pk,)),
|
||||
groups = reverse('main:groups_list', args=(obj.pk,)),
|
||||
hosts = reverse('main:inventory_hosts_list', args=(obj.pk,)),
|
||||
groups = reverse('main:inventory_groups_list', args=(obj.pk,)),
|
||||
organization = reverse('main:organizations_detail', args=(obj.organization.pk,)),
|
||||
)
|
||||
if obj.created_by:
|
||||
@@ -116,9 +117,10 @@ class HostSerializer(BaseSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Host
|
||||
fields = ('url', 'id', 'name', 'description', 'creation_date', 'inventory')
|
||||
fields = ('url', 'id', 'name', 'description', 'creation_date', 'related')
|
||||
|
||||
def get_related(self, obj):
|
||||
print self, obj
|
||||
res = dict(
|
||||
variable_data = reverse('main:hosts_variable_detail', args=(obj.pk,)),
|
||||
inventory = reverse('main:inventory_detail', args=(obj.inventory.pk,)),
|
||||
|
||||
@@ -30,6 +30,7 @@ organizations_urls = patterns('lib.main.views',
|
||||
url(r'^(?P<pk>[0-9]+)/audit_trail/$', 'organizations_audit_trail_list'),
|
||||
url(r'^(?P<pk>[0-9]+)/users/$', 'organizations_users_list'),
|
||||
url(r'^(?P<pk>[0-9]+)/admins/$', 'organizations_admins_list'),
|
||||
url(r'^(?P<pk>[0-9]+)/inventories/$', 'organizations_inventories_list'),
|
||||
url(r'^(?P<pk>[0-9]+)/projects/$', 'organizations_projects_list'),
|
||||
url(r'^(?P<pk>[0-9]+)/tags/$', 'organizations_tags_list'),
|
||||
url(r'^(?P<pk>[0-9]+)/teams/$', 'organizations_teams_list'),
|
||||
|
||||
@@ -139,6 +139,22 @@ class OrganizationsAuditTrailList(BaseSubList):
|
||||
raise PermissionDenied()
|
||||
return AuditTrail.objects.filter(organization_by_audit_trail__in = [ organization ])
|
||||
|
||||
class OrganizationsInventoriesList(BaseSubList):
|
||||
|
||||
model = Inventory
|
||||
serializer_class = InventorySerializer
|
||||
permission_classes = (CustomRbac,)
|
||||
parent_model = Organization
|
||||
relationship = 'inventories'
|
||||
postable = False
|
||||
|
||||
def _get_queryset(self):
|
||||
''' to list inventories in the organization, I must be a superuser or org admin '''
|
||||
organization = Organization.objects.get(pk=self.kwargs['pk'])
|
||||
if not (self.request.user.is_superuser or self.request.user in organization.admins.all()):
|
||||
# FIXME: use: organization.can_user_administrate(...) ?
|
||||
raise PermissionDenied()
|
||||
return Inventory.objects.filter(organization__in=[organization])
|
||||
|
||||
class OrganizationsUsersList(BaseSubList):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user