mirror of
https://github.com/Southampton-RSG/breccia-mapper.git
synced 2026-03-03 11:27:09 +00:00
refactor: move organisation latlng to answerset
This commit is contained in:
91
people/migrations/0036_move_latlng_to_answerset.py
Normal file
91
people/migrations/0036_move_latlng_to_answerset.py
Normal file
@@ -0,0 +1,91 @@
|
||||
# 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',
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user