Files
breccia-mapper/people/migrations/0036_move_latlng_to_answerset.py
2021-02-24 15:44:34 +00:00

92 lines
2.3 KiB
Python

# Generated by Django 2.2.10 on 2021-02-24 15:29
from django.core.exceptions import ObjectDoesNotExist
from django.db import migrations, models
def migrate_forward(apps, schema_editor):
Organisation = apps.get_model('people', 'Organisation')
fields = {
'latitude',
'longitude',
}
for obj in Organisation.objects.all():
try:
answer_set = obj.answer_sets.last()
if answer_set is None:
raise ObjectDoesNotExist
except ObjectDoesNotExist:
answer_set = obj.answer_sets.create()
for field in fields:
value = getattr(obj, field)
try:
setattr(answer_set, field, value)
except TypeError:
# Cannot directly set an m2m field
m2m = getattr(answer_set, field)
m2m.set(value.all())
answer_set.save()
def migrate_backward(apps, schema_editor):
Organisation = apps.get_model('people', 'Organisation')
fields = {
'latitude',
'longitude',
}
for obj in Organisation.objects.all():
try:
answer_set = obj.answer_sets.last()
for field in fields:
value = getattr(answer_set, field)
try:
setattr(obj, field, value)
except TypeError:
# Cannot directly set an m2m field
m2m = getattr(obj, field)
m2m.set(value.all())
obj.save()
except ObjectDoesNotExist:
pass
class Migration(migrations.Migration):
dependencies = [
('people', '0035_add_organisation_questions'),
]
operations = [
migrations.AddField(
model_name='organisationanswerset',
name='latitude',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='organisationanswerset',
name='longitude',
field=models.FloatField(blank=True, null=True),
),
migrations.RunPython(migrate_forward, migrate_backward),
migrations.RemoveField(
model_name='organisation',
name='latitude',
),
migrations.RemoveField(
model_name='organisation',
name='longitude',
),
]