datatracker/ietf/mailtrigger/migrations/0016_add_irsg_ballot_issued.py
Henrik Levkowetz 4bc6a20661 Merged in [18162] from jennifer@painless-security.com:
Notify IRSG when an IRSG ballot is created. Fixes #2978.
 - Legacy-Id: 18177
Note: SVN reference [18162] has been migrated to Git commit 6e97a89786
2020-07-15 14:52:38 +00:00

58 lines
2.2 KiB
Python

# Copyright The IETF Trust 2019-2020, All Rights Reserved
# -*- coding: utf-8 -*-
from django.db import migrations
def replace_mailtrigger(MailTrigger, old_slug, new_slug):
"""Replace a MailTrigger with an equivalent using a different slug"""
# Per 0013_add_irsg_ballot_saved.py, can't just modify the existing because that
# will lose the many-to-many relations.
orig_mailtrigger = MailTrigger.objects.get(slug=old_slug)
new_mailtrigger = MailTrigger.objects.create(slug=new_slug)
new_mailtrigger.to.set(orig_mailtrigger.to.all())
new_mailtrigger.cc.set(orig_mailtrigger.cc.all())
new_mailtrigger.desc = orig_mailtrigger.desc
new_mailtrigger.save()
orig_mailtrigger.delete() # get rid of the obsolete MailTrigger
def forward(apps, schema_editor):
"""Forward migration: create irsg_ballot_issued and rename ballot_issued to iesg_ballot_issued"""
# Load historical models
MailTrigger = apps.get_model('mailtrigger', 'MailTrigger')
Recipient = apps.get_model('mailtrigger', 'Recipient')
# Create the new MailTrigger
irsg_ballot_issued = MailTrigger.objects.create(
slug='irsg_ballot_issued',
desc='Recipients when a new IRSG ballot is issued',
)
irsg_ballot_issued.to.set(Recipient.objects.filter(slug='irsg'))
irsg_ballot_issued.cc.set(Recipient.objects.filter(slug__in=[
'doc_stream_manager', 'doc_affecteddoc_authors', 'doc_affecteddoc_group_chairs',
'doc_affecteddoc_notify', 'doc_authors', 'doc_group_chairs', 'doc_group_mail_list',
'doc_notify', 'doc_shepherd'
]))
# Replace existing 'ballot_issued' object with an 'iesg_ballot_issued'
replace_mailtrigger(MailTrigger, 'ballot_issued', 'iesg_ballot_issued')
def reverse(apps, shema_editor):
"""Reverse migration: rename iesg_ballot_issued to ballot_issued and remove irsg_ballot_issued"""
MailTrigger = apps.get_model('mailtrigger', 'MailTrigger')
MailTrigger.objects.filter(slug='irsg_ballot_issued').delete()
replace_mailtrigger(MailTrigger, 'iesg_ballot_issued', 'ballot_issued')
class Migration(migrations.Migration):
dependencies = [
('mailtrigger', '0015_add_ad_approved_status_change'),
]
operations = [
migrations.RunPython(forward, reverse),
]