mirror of
https://github.com/ansible/awx.git
synced 2026-01-14 03:10:42 -03:30
implement two methods for can_edit field for testing
This commit is contained in:
parent
25fa05da81
commit
eddc1a8ed2
@ -330,6 +330,12 @@ class BaseSerializer(serializers.ModelSerializer):
|
||||
}
|
||||
if len(roles) > 0:
|
||||
summary_fields['object_roles'] = roles
|
||||
if hasattr(obj, 'get_can_edit'):
|
||||
request = self.context.get('request', None)
|
||||
if request and request.user is not None:
|
||||
summary_fields['can_edit'] = obj.get_can_edit(request.user)
|
||||
elif hasattr(obj, 'can_edit'):
|
||||
summary_fields['can_edit'] = obj.can_edit
|
||||
return summary_fields
|
||||
|
||||
def get_created(self, obj):
|
||||
|
||||
@ -1521,6 +1521,24 @@ class InventoryList(ListCreateAPIView):
|
||||
qs = qs.select_related('admin_role', 'read_role', 'update_role', 'use_role', 'adhoc_role')
|
||||
return qs
|
||||
|
||||
def list(self, 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)
|
||||
for obj in page:
|
||||
if obj.pk in editable_ids:
|
||||
obj.can_edit = True
|
||||
else:
|
||||
obj.can_edit = False
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
class InventoryDetail(RetrieveUpdateDestroyAPIView):
|
||||
|
||||
model = Inventory
|
||||
|
||||
@ -105,6 +105,9 @@ class ProjectOptions(models.Model):
|
||||
on_delete=models.SET_NULL,
|
||||
)
|
||||
|
||||
def get_can_edit(self, user):
|
||||
return user in self.admin_role
|
||||
|
||||
def clean_scm_type(self):
|
||||
return self.scm_type or ''
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user