SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 8b2a9578 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Add data migration into Profile, from Reg and Ref Invitations

parent 756bea5d
No related branches found
No related tags found
No related merge requests found
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2018-10-01 03:08
from __future__ import unicode_literals
from django.db import migrations
from django.db.models import Q
def populate_profile_from_refinv(apps, schema_editor):
Profile = apps.get_model('profiles', 'Profile')
RefereeInvitation = apps.get_model('submissions', 'RefereeInvitation')
for refinv in RefereeInvitation.objects.filter(profile=None):
try:
profile = Profile.objects.get(
Q(email=refinv.email_address) |
Q(alternativeemail__email__in=[refinv.email_address]))
except Profile.DoesNotExist:
profile = Profile(title=refinv.title,
first_name=refinv.first_name,
last_name=refinv.last_name,
email=refinv.email_address,
discipline=refinv.submission.discipline,
expertises=refinv.submission.secondary_areas)
profile.save()
except Profile.MultipleObjectsReturned:
profile = Profile.objects.filter(
Q(email=refinv.email_address) |
Q(alternativeemail__email__in=[refinv.email_address])).first()
refinv.profile = profile
refinv.save()
def populate_profile_from_reginv(apps, schema_editor):
Profile = apps.get_model('profiles', 'Profile')
RegistrationInvitation = apps.get_model('invitations', 'RegistrationInvitation')
for reginv in RegistrationInvitation.objects.filter(profile=None):
try:
profile = Profile.objects.get(
Q(email=reginv.email) |
Q(alternativeemail__email__in=[reginv.email]))
except Profile.DoesNotExist:
profile = Profile(title=reginv.title,
first_name=reginv.first_name,
last_name=reginv.last_name,
email=reginv.email)
profile.save()
except Profile.MultipleObjectsReturned:
profile = Profile.objects.filter(
Q(email=reginv.email) |
Q(alternativeemail__email__in=[reginv.email])).first()
reginv.profile = profile
reginv.save()
class Migration(migrations.Migration):
dependencies = [
('profiles', '0005_populate_profile_from_contributor'),
('invitations', '0014_registrationinvitation_profile'),
('scipost', '0016_auto_20180930_1801'),
('submissions', '0035_refereeinvitation_profile'),
]
operations = [
# Start with populating from refinv, which contains more info:
migrations.RunPython(populate_profile_from_refinv,
reverse_code=migrations.RunPython.noop),
migrations.RunPython(populate_profile_from_reginv,
reverse_code=migrations.RunPython.noop),
]
......@@ -6,5 +6,8 @@ class SubmissionRelatedObjectMixin:
def save(self, *args, **kwargs):
obj = super().save(*args, **kwargs)
if hasattr(self, 'submission'):
self.submission.touch()
try:
self.submission.touch()
except AttributeError:
pass
return obj
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment