mirror of
https://github.com/ZwareBear/awx.git
synced 2026-05-06 00:11:50 -05:00
refactor step 1, get access_class within method
This commit is contained in:
@@ -1515,6 +1515,7 @@ class InventoryList(ListCreateAPIView):
|
||||
|
||||
model = Inventory
|
||||
serializer_class = InventorySerializer
|
||||
capabilities_prefetch = ['admin', 'adhoc']
|
||||
|
||||
def get_queryset(self):
|
||||
qs = Inventory.accessible_objects(self.request.user, 'read_role')
|
||||
@@ -1522,15 +1523,20 @@ class InventoryList(ListCreateAPIView):
|
||||
return qs
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
if not hasattr(self, 'capabilities_prefetch'):
|
||||
return super(ListCreateAPIView, self).list(request, *args, **kwargs)
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
|
||||
page = self.paginate_queryset(queryset)
|
||||
readable_ids = [obj.id for obj in page]
|
||||
editable_ids = Inventory.accessible_objects(request.user, 'admin_role').filter(pk__in=readable_ids).values_list('pk', flat=True)
|
||||
adhoc_ids = Inventory.accessible_objects(request.user, 'adhoc_role').filter(pk__in=readable_ids).values_list('pk', flat=True)
|
||||
for obj in page:
|
||||
obj.capabilities_cache = {'edit': False, 'adhoc': False}
|
||||
if obj.pk in editable_ids:
|
||||
obj.capabilities_cache['edit'] = True
|
||||
if obj.pk in adhoc_ids:
|
||||
obj.capabilities_cache['adhoc'] = True
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
Reference in New Issue
Block a user