63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import unicode_literals
|
|
|
|
from django.db import migrations, models
|
|
from django.db.models import Q
|
|
|
|
|
|
def branch_to_release(apps, schema_editor):
|
|
Layer_Version = apps.get_model('orm', 'Layer_Version')
|
|
Release = apps.get_model('orm', 'Release')
|
|
|
|
print("Converting all layer version up_branches to releases")
|
|
# Find all the layer versions which have an upbranch and convert them to
|
|
# the release that they're for.
|
|
for layer_version in Layer_Version.objects.filter(
|
|
Q(release=None) & ~Q(up_branch=None)):
|
|
try:
|
|
# HEAD and local are equivalent
|
|
if "HEAD" in layer_version.up_branch.name:
|
|
release = Release.objects.get(name="local")
|
|
layer_version.commit = "HEAD"
|
|
layer_version.branch = "HEAD"
|
|
else:
|
|
release = Release.objects.get(
|
|
name=layer_version.up_branch.name)
|
|
|
|
layer_version.release = release
|
|
layer_version.save()
|
|
except Exception as e:
|
|
print("Couldn't work out an appropriate release for %s "
|
|
"the up_branch was %s "
|
|
"user the django admin interface to correct it" %
|
|
(layer_version.layer.name, layer_version.up_branch.name))
|
|
print(e)
|
|
|
|
continue
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('orm', '0011_delete_layersource'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='layer_version',
|
|
name='release',
|
|
field=models.ForeignKey(to='orm.Release', default=None, null=True),
|
|
),
|
|
migrations.RunPython(branch_to_release,
|
|
reverse_code=migrations.RunPython.noop),
|
|
|
|
migrations.RemoveField(
|
|
model_name='layer_version',
|
|
name='up_branch',
|
|
),
|
|
|
|
migrations.DeleteModel(
|
|
name='Branch',
|
|
),
|
|
]
|