mirror of
https://github.com/Southampton-RSG/breccia-mapper.git
synced 2026-03-03 03:17:07 +00:00
refactor: move static person qs to answerset
This commit is contained in:
26
people/migrations/0025_rename_relationship_target.py
Normal file
26
people/migrations/0025_rename_relationship_target.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 2.2.10 on 2020-11-27 08:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('people', '0024_remove_age_gender'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveConstraint(
|
||||
model_name='relationship',
|
||||
name='unique_relationship',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='relationship',
|
||||
old_name='target',
|
||||
new_name='target_person',
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name='relationship',
|
||||
constraint=models.UniqueConstraint(fields=('source', 'target_person'), name='unique_relationship'),
|
||||
),
|
||||
]
|
||||
148
people/migrations/0026_move_static_person_questions.py
Normal file
148
people/migrations/0026_move_static_person_questions.py
Normal file
@@ -0,0 +1,148 @@
|
||||
# Generated by Django 2.2.10 on 2020-12-02 13:31
|
||||
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django_countries.fields
|
||||
|
||||
|
||||
def migrate_forward(apps, schema_editor):
|
||||
Person = apps.get_model('people', 'Person')
|
||||
PersonAnswerset = apps.get_model('people', 'PersonAnswerSet')
|
||||
|
||||
fields = {
|
||||
'country_of_residence',
|
||||
'disciplines',
|
||||
'job_title',
|
||||
'nationality',
|
||||
'organisation',
|
||||
'organisation_started_date',
|
||||
'themes',
|
||||
}
|
||||
|
||||
for person in Person.objects.all():
|
||||
try:
|
||||
answer_set = person.answer_sets.last()
|
||||
|
||||
except ObjectDoesNotExist:
|
||||
answer_set = person.answer_sets.create()
|
||||
|
||||
for field in fields:
|
||||
value = getattr(person, 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):
|
||||
Person = apps.get_model('people', 'Person')
|
||||
PersonAnswerset = apps.get_model('people', 'PersonAnswerSet')
|
||||
|
||||
fields = {
|
||||
'country_of_residence',
|
||||
'disciplines',
|
||||
'job_title',
|
||||
'nationality',
|
||||
'organisation',
|
||||
'organisation_started_date',
|
||||
'themes',
|
||||
}
|
||||
|
||||
for person in Person.objects.all():
|
||||
try:
|
||||
answer_set = person.answer_sets.last()
|
||||
|
||||
for field in fields:
|
||||
value = getattr(answer_set, field)
|
||||
try:
|
||||
setattr(person, field, value)
|
||||
|
||||
except TypeError:
|
||||
# Cannot directly set an m2m field
|
||||
m2m = getattr(person, field)
|
||||
m2m.set(value.all())
|
||||
|
||||
person.save()
|
||||
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('people', '0025_rename_relationship_target'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='personanswerset',
|
||||
name='country_of_residence',
|
||||
field=django_countries.fields.CountryField(blank=True, max_length=2, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='personanswerset',
|
||||
name='disciplines',
|
||||
field=models.CharField(blank=True, max_length=255, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='personanswerset',
|
||||
name='job_title',
|
||||
field=models.CharField(blank=True, max_length=255),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='personanswerset',
|
||||
name='nationality',
|
||||
field=django_countries.fields.CountryField(blank=True, max_length=2, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='personanswerset',
|
||||
name='organisation',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='members', to='people.Organisation'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='personanswerset',
|
||||
name='organisation_started_date',
|
||||
field=models.DateField(null=True, verbose_name='Date started at this organisation'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='personanswerset',
|
||||
name='themes',
|
||||
field=models.ManyToManyField(blank=True, related_name='people', to='people.Theme'),
|
||||
),
|
||||
migrations.RunPython(migrate_forward, migrate_backward),
|
||||
migrations.RemoveField(
|
||||
model_name='person',
|
||||
name='country_of_residence',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='person',
|
||||
name='disciplines',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='person',
|
||||
name='job_title',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='person',
|
||||
name='nationality',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='person',
|
||||
name='organisation',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='person',
|
||||
name='organisation_started_date',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='person',
|
||||
name='themes',
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user