Merge pull request #101 from jangsutsr/7322_prevent_saving_jt_with_pending_deleting_inv

Clear related job templates when inventory is deleted
This commit is contained in:
Aaron Tan
2017-08-01 20:32:06 -04:00
committed by GitHub
2 changed files with 20 additions and 5 deletions

View File

@@ -382,6 +382,7 @@ class Inventory(CommonModelNameNotUnique, ResourceMixin):
raise RuntimeError("Inventory is already pending deletion.") raise RuntimeError("Inventory is already pending deletion.")
self.pending_deletion = True self.pending_deletion = True
self.save(update_fields=['pending_deletion']) self.save(update_fields=['pending_deletion'])
self.jobtemplates.clear()
self.websocket_emit_status('pending_deletion') self.websocket_emit_status('pending_deletion')
delete_inventory.delay(self.pk, user_id) delete_inventory.delay(self.pk, user_id)

View File

@@ -88,6 +88,20 @@ def test_async_inventory_duplicate_deletion_prevention(delete, get, inventory, a
assert resp.data['error'] == 'Inventory is already pending deletion.' assert resp.data['error'] == 'Inventory is already pending deletion.'
@pytest.mark.django_db
def test_async_inventory_deletion_deletes_related_jt(delete, get, job_template, inventory, alice, admin):
job_template.inventory = inventory
job_template.save()
assert job_template.inventory == inventory
inventory.admin_role.members.add(alice)
resp = delete(reverse('api:inventory_detail', kwargs={'pk': inventory.id}), alice)
assert resp.status_code == 202
resp = get(reverse('api:job_template_detail', kwargs={'pk': job_template.id}), admin)
jdata = json.loads(resp.content)
assert jdata['inventory'] is None
@pytest.mark.parametrize('order_by', ('script', '-script', 'script,pk', '-script,pk')) @pytest.mark.parametrize('order_by', ('script', '-script', 'script,pk', '-script,pk'))
@pytest.mark.django_db @pytest.mark.django_db
def test_list_cannot_order_by_unsearchable_field(get, organization, alice, order_by): def test_list_cannot_order_by_unsearchable_field(get, organization, alice, order_by):