Merge pull request #2696 from AlanCoding/bulk_del_inv

Pre-delete bulk delete related, fix parallel request conflicts

Reviewed-by: Alan Rominger <arominge@redhat.com>
             https://github.com/AlanCoding
This commit is contained in:
softwarefactory-project-zuul[bot] 2018-11-15 19:58:49 +00:00 committed by GitHub
commit e0d59766e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 2 deletions

View File

@ -552,9 +552,8 @@ class SubListDestroyAPIView(DestroyAPIView, SubListAPIView):
def perform_list_destroy(self, instance_list):
if self.check_sub_obj_permission:
# Check permissions for all before deleting, avoiding half-deleted lists
for instance in instance_list:
if self.has_delete_permission(instance):
if not self.has_delete_permission(instance):
raise PermissionDenied()
for instance in instance_list:
self.perform_destroy(instance, check_permission=False)

View File

@ -2055,6 +2055,14 @@ class InventorySourceHostsList(HostRelatedSearchMixin, SubListDestroyAPIView):
relationship = 'hosts'
check_sub_obj_permission = False
def perform_list_destroy(self, instance_list):
# Activity stream doesn't record disassociation here anyway
# no signals-related reason to not bulk-delete
Host.groups.through.objects.filter(
host__inventory_sources=self.get_parent_object()
).delete()
return super(InventorySourceHostsList, self).perform_list_destroy(instance_list)
class InventorySourceGroupsList(SubListDestroyAPIView):
@ -2064,6 +2072,13 @@ class InventorySourceGroupsList(SubListDestroyAPIView):
relationship = 'groups'
check_sub_obj_permission = False
def perform_list_destroy(self, instance_list):
# Same arguments for bulk delete as with host list
Group.hosts.through.objects.filter(
group__inventory_sources=self.get_parent_object()
).delete()
return super(InventorySourceGroupsList, self).perform_list_destroy(instance_list)
class InventorySourceUpdatesList(SubListAPIView):