mirror of
https://github.com/Southampton-RSG/breccia-mapper.git
synced 2026-03-03 03:17:07 +00:00
This means we're starting to use the same system for person questions as for relationship questions
66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
# Generated by Django 2.2.10 on 2020-11-25 15:50
|
|
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
from django.db import migrations
|
|
from django.utils import timezone
|
|
|
|
from .utils.question_sets import port_question
|
|
|
|
|
|
def migrate_forward(apps, schema_editor):
|
|
Person = apps.get_model('people', 'Person')
|
|
Role = apps.get_model('people', 'Role')
|
|
|
|
role_question = port_question(apps, 'Role',
|
|
Role.objects.values_list('name', flat=True))
|
|
|
|
for person in Person.objects.all():
|
|
try:
|
|
prev_set = person.answer_sets.latest('timestamp')
|
|
|
|
except ObjectDoesNotExist:
|
|
prev_set = None
|
|
|
|
try:
|
|
|
|
answer_set = person.answer_sets.create()
|
|
answer_set.question_answers.add(
|
|
role_question.answers.get(text=person.role.name))
|
|
|
|
prev_set.replaced_timestamp = timezone.datetime.now()
|
|
|
|
except AttributeError:
|
|
pass
|
|
|
|
|
|
def migrate_backward(apps, schema_editor):
|
|
Person = apps.get_model('people', 'Person')
|
|
Role = apps.get_model('people', 'Role')
|
|
|
|
for person in Person.objects.all():
|
|
try:
|
|
current_answers = person.answer_sets.latest('timestamp')
|
|
role_answer = current_answers.question_answers.get(
|
|
question__text='Role')
|
|
person.role, _ = Role.objects.get_or_create(name=role_answer.text)
|
|
person.save()
|
|
|
|
except ObjectDoesNotExist:
|
|
pass
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('people', '0022_refactor_person_questions'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(migrate_forward, migrate_backward),
|
|
migrations.RemoveField(
|
|
model_name='person',
|
|
name='role',
|
|
),
|
|
migrations.DeleteModel('Role'),
|
|
]
|