1
0
mirror of https://github.com/ansible/awx.git synced 2024-11-01 16:51:11 +03:00

Include all previously run operations to satisfy Django migration planner.

This commit is contained in:
Wayne Witzel III 2017-11-17 11:32:17 -05:00
parent dbe135991b
commit 249a5e5e4d
No known key found for this signature in database
GPG Key ID: B4F07BDC564D6301
2 changed files with 16 additions and 5 deletions

View File

@ -9,6 +9,9 @@ from django.db import migrations, models
from django.conf import settings
import awx.main.fields
import _squashed
from _squashed_30 import SQUASHED_30
class Migration(migrations.Migration):
replaces = [(b'main', '0020_v300_labels_changes'),
@ -19,7 +22,7 @@ class Migration(migrations.Migration):
(b'main', '0025_v300_update_rbac_parents'),
(b'main', '0026_v300_credential_unique'),
(b'main', '0027_v300_team_migrations'),
(b'main', '0028_v300_org_team_cascade')]
(b'main', '0028_v300_org_team_cascade')] + _squashed.replaces(SQUASHED_30, applied=True)
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
@ -116,4 +119,4 @@ class Migration(migrations.Migration):
field=models.ForeignKey(related_name='teams', to='main.Organization'),
preserve_default=False,
),
]
] + _squashed.operations(SQUASHED_30, applied=True)

View File

@ -35,21 +35,29 @@ def current_migration(exclude_squashed=True):
return None
def replaces(squashed):
def replaces(squashed, applied=False):
'''Build a list of replacement migrations based on the most recent non-squashed migration
and the provided list of SQUASHED migrations. If the most recent non-squashed migration
is not present anywhere in the SQUASHED dictionary, assume they have all been applied.
If applied is True, this will return a list of all the migrations that have already
been applied.
'''
squashed_keys, key_index = squash_data(squashed)
if applied:
return [(b'main', key) for key in squashed_keys[:key_index]]
return [(b'main', key) for key in squashed_keys[key_index:]]
def operations(squashed):
def operations(squashed, applied=False):
'''Build a list of migration operations based on the most recent non-squashed migration
and the provided list of squashed migrations. If the most recent non-squashed migration
is not present anywhere in the `squashed` dictionary, assume they have all been applied.
If applied is True, this will return a list of all the operations that have
already been applied.
'''
squashed_keys, key_index = squash_data(squashed)
op_keys = squashed_keys[key_index:]
op_keys = squashed_keys[:key_index] if applied else squashed_keys[key_index:]
ops = [squashed[op_key] for op_key in op_keys]
return [op for op in chain.from_iterable(ops)]