| # -*- 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', |
| ), |
| ] |