Merge pull request #7152 from AlanCoding/inv_src_block

block deletion of inventory sources with running jobs
This commit is contained in:
Alan Rominger
2017-07-20 10:31:25 -04:00
committed by GitHub

View File

@@ -794,11 +794,14 @@ class InventorySourceAccess(BaseAccess):
inventory=data.get('inventory'), inventory=data.get('inventory'),
update_on_project_update=True, source='scm').exists()) update_on_project_update=True, source='scm').exists())
@check_superuser
def can_delete(self, obj): def can_delete(self, obj):
if obj and obj.inventory: if not (self.user.is_superuser or not (obj and obj.inventory and self.user.can_access(Inventory, 'admin', obj.inventory, None))):
return self.user.can_access(Inventory, 'admin', obj.inventory, None) return False
return False active_jobs_qs = InventoryUpdate.objects.filter(inventory_source=obj, status__in=ACTIVE_STATES)
if active_jobs_qs.exists():
raise StateConflict({"conflict": _("Resource is being used by running jobs"),
"active_jobs": [dict(type="inventory_update", id=o.id) for o in active_jobs_qs.all()]})
return True
@check_superuser @check_superuser
def can_change(self, obj, data): def can_change(self, obj, data):