mirror of
https://github.com/ansible/awx.git
synced 2026-04-13 14:09:25 -02:30
add schedule_deletion method and signal
This commit is contained in:
@@ -373,6 +373,16 @@ class Inventory(CommonModelNameNotUnique, ResourceMixin):
|
||||
raise ValidationError(_("Credential kind must be 'insights'."))
|
||||
return self.insights_credential
|
||||
|
||||
@transaction.atomic
|
||||
def schedule_deletion(self):
|
||||
from awx.main.tasks import delete_inventory
|
||||
if self.pending_deletion is True:
|
||||
raise RuntimeError("Inventory is already pending deletion.")
|
||||
self.websocket_emit_status('pending_deletion')
|
||||
delete_inventory.delay(self.pk)
|
||||
self.pending_deletion = True
|
||||
self.save(update_fields=['pending_deletion'])
|
||||
|
||||
|
||||
class SmartInventoryMembership(BaseModel):
|
||||
'''
|
||||
|
||||
@@ -510,3 +510,13 @@ def get_current_user_from_drf_request(sender, **kwargs):
|
||||
request = get_current_request()
|
||||
drf_request = getattr(request, 'drf_request', None)
|
||||
return (getattr(drf_request, 'user', False), 0)
|
||||
|
||||
|
||||
@receiver(pre_delete, sender=Organization)
|
||||
def delete_inventory_for_org(sender, instance, **kwargs):
|
||||
inventories = Inventory.objects.filter(organization__pk=instance.pk)
|
||||
for inventory in inventories:
|
||||
try:
|
||||
inventory.schedule_deletion()
|
||||
except RuntimeError, e:
|
||||
logger.debug(e)
|
||||
|
||||
Reference in New Issue
Block a user