Migrate route difficulty to use new IntegerChoices
[climbing.kerkeslager.com] / src / climbing / migrations / 0007_pitch_difficulty.py
1 # Generated by Django 4.0.3 on 2022-03-13 16:38
2
3 from django.db import migrations, models
4
5 ROUTE_DIFFICULTY_CHOICES = (
6     ('5.0', '5.0'),
7     ('5.1', '5.1'),
8     ('5.2', '5.2'),
9     ('5.3', '5.3'),
10     ('5.4', '5.4'),
11     ('5.5', '5.5'),
12     ('5.6', '5.6'),
13     ('5.6+', '5.6+'),
14     ('5.7', '5.7'),
15     ('5.7+', '5.7+'),
16     ('5.8', '5.8'),
17     ('5.8+', '5.8+'),
18     ('5.9-', '5.9-'),
19     ('5.9', '5.9'),
20     ('5.9+', '5.9+'),
21     ('5.10a', '5.10a'),
22     ('5.10b', '5.10b'),
23     ('5.10c', '5.10c'),
24     ('5.10d', '5.10d'),
25     ('5.11a', '5.11a'),
26     ('5.11b', '5.11b'),
27     ('5.11c', '5.11c'),
28     ('5.11d', '5.11d'),
29     ('5.12a', '5.12a'),
30     ('5.12b', '5.12b'),
31     ('5.12c', '5.12c'),
32     ('5.12d', '5.12d'),
33     ('5.13a', '5.13a'),
34     ('5.13b', '5.13b'),
35     ('5.13c', '5.13c'),
36     ('5.13d', '5.13d'),
37     ('5.14a', '5.14a'),
38     ('5.14b', '5.14b'),
39     ('5.14c', '5.14c'),
40     ('5.14d', '5.14d'),
41     ('5.15a', '5.15a'),
42     ('5.15b', '5.15b'),
43     ('5.15c', '5.15c'),
44     ('5.15d', '5.15d'),
45 )
46
47 def forward(apps, schema_editor):
48     Pitch = apps.get_model('climbing', 'Pitch')
49
50     difficulties = {}
51
52     for i, d in enumerate(ROUTE_DIFFICULTY_CHOICES):
53         difficulties[d[0]] = i
54
55     for p in Pitch.objects.all():
56         p.difficulty = difficulties[p.difficulty_old]
57         p.save()
58
59 def backward(apps, schema_editor):
60     Pitch = apps.get_model('climbing', 'Pitch')
61
62     for p in Pitch.objects.all():
63         p.difficulty_old = ROUTE_DIFFICULTY_CHOICES[p.difficulty][0]
64         p.save()
65
66 class Migration(migrations.Migration):
67
68     dependencies = [
69         ('climbing', '0006_change_difficulty_name'),
70     ]
71
72     operations = [
73         migrations.AddField(
74             model_name='pitch',
75             name='difficulty',
76             field=models.PositiveIntegerField(choices=[(0, '5.0'), (1, '5.1'), (2, '5.2'), (3, '5.3'), (4, '5.4'), (5, '5.5'), (6, '5.6'), (7, '5.6+'), (8, '5.7'), (9, '5.7+'), (10, '5.8'), (11, '5.8+'), (12, '5.9-'), (13, '5.9'), (14, '5.9+'), (15, '5.10a'), (16, '5.10b'), (17, '5.10c'), (18, '5.10d'), (19, '5.11a'), (20, '5.11b'), (21, '5.11c'), (22, '5.11d'), (23, '5.12a'), (24, '5.12b'), (25, '5.12c'), (26, '5.12d'), (27, '5.13a'), (28, '5.13b'), (29, '5.13c'), (30, '5.13d'), (31, '5.14a'), (32, '5.14b'), (33, '5.14c'), (34, '5.14d'), (35, '5.15a'), (36, '5.15b'), (37, '5.15c'), (38, '5.15d')], default=0),
77             preserve_default=False,
78         ),
79         migrations.RunPython(forward, backward),
80     ]