mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
This will make django automatically remove them when we run squashmigrations. There are still some RunSQL statements which we will have to take care of manually.
52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
# Generated by Django 1.11.6 on 2017-12-05 01:08
|
|
|
|
import django.db.models.deletion
|
|
from django.db import migrations, models
|
|
from django.db.backends.postgresql.schema import DatabaseSchemaEditor
|
|
from django.db.migrations.state import StateApps
|
|
|
|
|
|
def set_realm_for_existing_scheduledemails(
|
|
apps: StateApps, schema_editor: DatabaseSchemaEditor) -> None:
|
|
scheduledemail_model = apps.get_model("zerver", "ScheduledEmail")
|
|
preregistrationuser_model = apps.get_model("zerver", "PreregistrationUser")
|
|
for scheduledemail in scheduledemail_model.objects.all():
|
|
if scheduledemail.type == 3: # ScheduledEmail.INVITATION_REMINDER
|
|
# Don't think this can be None, but just be safe
|
|
prereg = preregistrationuser_model.objects.filter(email=scheduledemail.address).first()
|
|
if prereg is not None:
|
|
scheduledemail.realm = prereg.realm
|
|
else:
|
|
scheduledemail.realm = scheduledemail.user.realm
|
|
scheduledemail.save(update_fields=['realm'])
|
|
|
|
# Shouldn't be needed, but just in case
|
|
scheduledemail_model.objects.filter(realm=None).delete()
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('zerver', '0127_disallow_chars_in_stream_and_user_name'),
|
|
]
|
|
|
|
operations = [
|
|
# Start with ScheduledEmail.realm being non-null
|
|
migrations.AddField(
|
|
model_name='scheduledemail',
|
|
name='realm',
|
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'),
|
|
),
|
|
|
|
# Sets realm for existing ScheduledEmails
|
|
migrations.RunPython(set_realm_for_existing_scheduledemails,
|
|
reverse_code=migrations.RunPython.noop,
|
|
elidable=True),
|
|
|
|
# Require ScheduledEmail.realm to be non-null
|
|
migrations.AlterField(
|
|
model_name='scheduledemail',
|
|
name='realm',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'),
|
|
),
|
|
]
|