blob: 0e6bb83311509fdbf3eb06b1a4556e0ca9f649b9 [file] [log] [blame]
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001# -*- coding: utf-8 -*-
2from __future__ import unicode_literals
3
4from django.db import migrations, models
5from django.db.models import Q
6
7
8def branch_to_release(apps, schema_editor):
9 Layer_Version = apps.get_model('orm', 'Layer_Version')
10 Release = apps.get_model('orm', 'Release')
11
12 print("Converting all layer version up_branches to releases")
13 # Find all the layer versions which have an upbranch and convert them to
14 # the release that they're for.
15 for layer_version in Layer_Version.objects.filter(
16 Q(release=None) & ~Q(up_branch=None)):
17 try:
18 # HEAD and local are equivalent
19 if "HEAD" in layer_version.up_branch.name:
20 release = Release.objects.get(name="local")
21 layer_version.commit = "HEAD"
22 layer_version.branch = "HEAD"
23 else:
24 release = Release.objects.get(
25 name=layer_version.up_branch.name)
26
27 layer_version.release = release
28 layer_version.save()
29 except Exception as e:
30 print("Couldn't work out an appropriate release for %s "
31 "the up_branch was %s "
32 "user the django admin interface to correct it" %
33 (layer_version.layer.name, layer_version.up_branch.name))
34 print(e)
35
36 continue
37
38
39class Migration(migrations.Migration):
40
41 dependencies = [
42 ('orm', '0011_delete_layersource'),
43 ]
44
45 operations = [
46 migrations.AddField(
47 model_name='layer_version',
48 name='release',
49 field=models.ForeignKey(to='orm.Release', default=None, null=True),
50 ),
51 migrations.RunPython(branch_to_release,
52 reverse_code=migrations.RunPython.noop),
53
54 migrations.RemoveField(
55 model_name='layer_version',
56 name='up_branch',
57 ),
58
59 migrations.DeleteModel(
60 name='Branch',
61 ),
62 ]