diff --git a/awx/main/migrations/0006_v320_release.py b/awx/main/migrations/0006_v320_release.py index af0bd9def0..173e649c77 100644 --- a/awx/main/migrations/0006_v320_release.py +++ b/awx/main/migrations/0006_v320_release.py @@ -6,7 +6,12 @@ from __future__ import unicode_literals from psycopg2.extensions import AsIs # Django -from django.db import migrations, models +from django.db import ( + connection, + migrations, + models, + OperationalError +) from django.conf import settings import taggit.managers @@ -15,15 +20,23 @@ import awx.main.fields from awx.main.models import Host +def replaces(): + squashed = ['0005a_squashed_v310_v313_updates', '0005b_squashed_v310_v313_updates'] + try: + recorder = migrations.recorder.MigrationRecorder(connection) + result = recorder.migration_qs.filter(app='main').filter(name__in=squashed).all() + return [('main', m.name) for m in result] + except OperationalError: + return [] + + class Migration(migrations.Migration): dependencies = [ ('main', '0005_squashed_v310_v313_updates'), ] - replaces = [ - ('main', '0005a_squashed_v310_v313_updates'), - ] + replaces = replaces() operations = [ # Release UJT unique_together constraint diff --git a/awx/main/migrations/_squashed.py b/awx/main/migrations/_squashed.py index 709a0a8869..c7de8c9cd0 100644 --- a/awx/main/migrations/_squashed.py +++ b/awx/main/migrations/_squashed.py @@ -22,11 +22,14 @@ def squash_data(squashed): return squashed_keys, key_index -def current_migration(): +def current_migration(exclude_squashed=True): '''Get the latest migration non-squashed migration''' try: recorder = migrations.recorder.MigrationRecorder(connection) - return recorder.migration_qs.filter(app='main').exclude(name__contains='squashed').latest('id') + migration_qs = recorder.migration_qs.filter(app='main') + if exclude_squashed: + migration_qs = migration_qs.exclude(name__contains='squashed') + return migration_qs.latest('id') except (recorder.Migration.DoesNotExist, OperationalError): return None