Shift over rest of choices to IntegerChoices
[climbing.kerkeslager.com] / src / climbing / migrations / 0010_pitch_safety_problem_difficulty_problem_safety.py
1 # Generated by Django 4.0.3 on 2022-03-13 17:16
2
3 from django.db import migrations, models
4
5 SAFETY_CHOICES = (
6     ('G', 'G'),
7     ('PG', 'PG'),
8     ('PG13', 'PG13'),
9     ('R', 'R'),
10     ('X', 'X'),
11 )
12
13 BOULDER_DIFFICULTY_CHOICES = (
14     ('V0', 'V0'),
15     ('V1', 'V1'),
16     ('V2', 'V2'),
17     ('V3', 'V3'),
18     ('V4', 'V4'),
19     ('V5', 'V5'),
20     ('V6', 'V6'),
21     ('V7', 'V7'),
22     ('V8', 'V8'),
23     ('V9', 'V9'),
24     ('V10', 'V10'),
25     ('V11', 'V11'),
26     ('V12', 'V12'),
27     ('V13', 'V13'),
28     ('V14', 'V14'),
29     ('V15', 'V15'),
30     ('V16', 'V16'),
31     ('V17', 'V17'),
32 )
33
34 def forward(app, schema_editor):
35     Pitch = app.get_model('climbing', 'Pitch')
36     Problem = app.get_model('climbing', 'Problem')
37
38     safety_choices = {
39         s[0]: i
40         for i, s in enumerate(SAFETY_CHOICES)
41     }
42
43     difficulty_choices = {
44         d[0]: i
45         for i, d in enumerate(BOULDER_DIFFICULTY_CHOICES)
46     }
47
48     for p in Pitch.objects.all():
49         p.safety = safety_choices[p.safety_old]
50         p.save()
51
52     for p in Problem.objects.all():
53         p.difficulty = difficulty_choices[p.difficulty_old]
54         p.safety = safety[p.safety_old]
55         p.save()
56
57 def backward(app, schema_editor):
58     Pitch = app.get_model('climbing', 'Pitch')
59     Problem = app.get_model('climbing', 'Problem')
60
61     for p in Pitch.objects.all():
62         p.safety_old = SAFETY_CHOICES[p.safety][0]
63         p.save()
64
65     for p in Problem.objects.all():
66         p.difficulty_old = BOULDER_DIFFICULTY_CHOICES[p.difficulty][0]
67         p.safety_old = SAFETY_CHOICES[p.safety][0]
68         p.save()
69
70
71 class Migration(migrations.Migration):
72
73     dependencies = [
74         ('climbing', '0009_rename_safety_pitch_safety_old_and_more'),
75     ]
76
77     operations = [
78         migrations.AddField(
79             model_name='pitch',
80             name='safety',
81             field=models.IntegerField(choices=[(0, 'G'), (1, 'PG'), (2, 'PG13'), (3, 'R'), (4, 'X')], default=0),
82             preserve_default=False,
83         ),
84         migrations.AddField(
85             model_name='problem',
86             name='difficulty',
87             field=models.IntegerField(choices=[(0, 'V0'), (1, 'V1'), (2, 'V2'), (3, 'V3'), (4, 'V4'), (5, 'V5'), (6, 'V6'), (7, 'V7'), (8, 'V8'), (9, 'V9'), (10, 'V10'), (11, 'V11'), (12, 'V12'), (13, 'V13'), (14, 'V14'), (15, 'V15'), (16, 'V16'), (17, 'V17')], default=0),
88             preserve_default=False,
89         ),
90         migrations.AddField(
91             model_name='problem',
92             name='safety',
93             field=models.IntegerField(choices=[(0, 'G'), (1, 'PG'), (2, 'PG13'), (3, 'R'), (4, 'X')], default=0),
94             preserve_default=False,
95         ),
96         migrations.RunPython(forward, backward),
97     ]