32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
# Data migration: fill ReferralInvitedEmail from existing UserReferralProfile (referred_by is not null)
|
|
|
|
from django.db import migrations
|
|
|
|
|
|
def backfill_invited_emails(apps, schema_editor):
|
|
UserReferralProfile = apps.get_model('referrals', 'UserReferralProfile')
|
|
ReferralInvitedEmail = apps.get_model('referrals', 'ReferralInvitedEmail')
|
|
for profile in UserReferralProfile.objects.filter(referred_by__isnull=False).select_related('user', 'referred_by'):
|
|
email_lower = profile.user.email.lower().strip()
|
|
if not ReferralInvitedEmail.objects.filter(email=email_lower).exists():
|
|
ReferralInvitedEmail.objects.create(
|
|
email=email_lower,
|
|
referrer=profile.referred_by,
|
|
referred_user=profile.user,
|
|
)
|
|
|
|
|
|
def noop(apps, schema_editor):
|
|
pass
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('referrals', '0002_add_referral_antifraud_models'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(backfill_invited_emails, noop),
|
|
]
|