From 3c89aeaba4005575386565aaab16a387621f012e Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Thu, 3 Aug 2017 16:27:21 -0400 Subject: [PATCH] fix single update_on_project_update per-inventory --- awx/main/models/inventory.py | 6 ++++-- awx/main/tests/functional/models/test_inventory.py | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index 660893ebf1..6e637cb536 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -16,6 +16,7 @@ from django.utils.translation import ugettext_lazy as _ from django.db import transaction from django.core.exceptions import ValidationError from django.utils.timezone import now +from django.db.models import Q # AWX from awx.api.versioning import reverse @@ -1394,8 +1395,9 @@ class InventorySource(UnifiedJobTemplate, InventorySourceOptions): if self.update_on_project_update is True and \ self.source == 'scm' and \ InventorySource.objects.filter( - inventory=self.inventory, - update_on_project_update=True, source='scm').exists(): + Q(inventory=self.inventory, + update_on_project_update=True, source='scm') & + ~Q(id=self.id)).exists(): raise ValidationError(_("Cannot update SCM-based inventory source on launch if set to update on project update. " "Instead, configure the corresponding source project to update on launch.")) return self.update_on_project_update diff --git a/awx/main/tests/functional/models/test_inventory.py b/awx/main/tests/functional/models/test_inventory.py index b342056739..fd31e50315 100644 --- a/awx/main/tests/functional/models/test_inventory.py +++ b/awx/main/tests/functional/models/test_inventory.py @@ -58,6 +58,9 @@ class TestSCMClean: inv_src1.clean_update_on_project_update() inv_src1.save() + inv_src1.source_vars = '---\nhello: world' + inv_src1.clean_update_on_project_update() + inv_src2 = InventorySource(inventory=inventory, update_on_project_update=True, source='scm')