mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 18:09:57 -03:30
Merge pull request #10633 from jbradberry/conditional-polymorphic-setnull
Conditional polymorphic setnull SUMMARY ISSUE TYPE Bugfix Pull Request COMPONENT NAME API AWX VERSION ADDITIONAL INFORMATION Reviewed-by: Alan Rominger <arominge@redhat.com> Reviewed-by: Bianca Henderson <beeankha@gmail.com>
This commit is contained in:
commit
65ddc8c0bd
@ -11,11 +11,8 @@ def remove_iso_instances(apps, schema_editor):
|
||||
|
||||
def remove_iso_groups(apps, schema_editor):
|
||||
InstanceGroup = apps.get_model('main', 'InstanceGroup')
|
||||
UnifiedJob = apps.get_model('main', 'UnifiedJob')
|
||||
with transaction.atomic():
|
||||
for ig in InstanceGroup.objects.filter(controller__isnull=False):
|
||||
UnifiedJob.objects.filter(instance_group=ig).update(instance_group=None)
|
||||
ig.delete()
|
||||
InstanceGroup.objects.filter(controller__isnull=False).delete()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
import logging
|
||||
|
||||
from django.utils.encoding import smart_text
|
||||
from django.utils.timezone import now
|
||||
|
||||
from awx.main.utils.common import set_current_apps
|
||||
from awx.main.utils.common import parse_yaml_or_json
|
||||
@ -97,21 +96,6 @@ def delete_custom_inv_source(apps, schema_editor):
|
||||
set_current_apps(apps)
|
||||
InventorySource = apps.get_model('main', 'InventorySource')
|
||||
InventoryUpdate = apps.get_model('main', 'InventoryUpdate')
|
||||
Schedule = apps.get_model('main', 'Schedule')
|
||||
|
||||
saved_time = now()
|
||||
|
||||
# We cannot allow polymorphic.SET_NULL relationships to exist before we delete any InventorySources or InventoryUpdates or Schedules
|
||||
# so we do this hack of updating modified time so we can keep track of which schedules to delete (b/c we nulled the relationships)
|
||||
Schedule.objects.filter(unified_job_template__inventorysource__source='custom').update(modified=saved_time)
|
||||
InventoryUpdate.objects.filter(source='custom', schedule__isnull=False).update(schedule=None)
|
||||
InventorySource.objects.filter(source='custom', next_schedule__isnull=False).update(next_schedule=None)
|
||||
|
||||
# safe to delete Schedule objects with no schedule or next_schedule pointers from UJ or UJT tables
|
||||
ct, deletions = Schedule.objects.filter(modified=saved_time).delete()
|
||||
if ct:
|
||||
logger.info('deleted {} custom inventory source schedules: {}'.format(ct, deletions))
|
||||
|
||||
ct, deletions = InventoryUpdate.objects.filter(source='custom').delete()
|
||||
if ct:
|
||||
logger.info('deleted {}'.format((ct, deletions)))
|
||||
|
||||
@ -15,4 +15,6 @@ def build_polymorphic_ctypes_map(cls):
|
||||
|
||||
|
||||
def SET_NULL(collector, field, sub_objs, using):
|
||||
return models.SET_NULL(collector, field, sub_objs.non_polymorphic(), using)
|
||||
if hasattr(sub_objs, 'non_polymorphic'):
|
||||
sub_objs = sub_objs.non_polymorphic()
|
||||
return models.SET_NULL(collector, field, sub_objs, using)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user