datatracker/ietf/group/migrations/0007_concluded_group_cleanup.py

289 lines
13 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import datetime
from django.db import migrations
import debug # pyflakes:ignore
definite_bof_conc = [
'afic',
'dnsevolv',
'fddifs',
'icp',
'ietfgrow',
'ios',
'ipdecide',
'mailftp',
'osiextnd',
'ramp',
'skey',
'termacct',
'tpcint',
'usm',
'vtp',
]
maybe_bof_conc = [
'ima',
'nsfnet',
'resdisc',
'shr',
'tadmin',
'tsess',
'txwg',
'x3s3.3',
]
had_no_parent = {
'acct2': 'ops-old',
'gisd': 'ops-old',
'ire': 'ops-old',
'newdom': 'ops-old',
'ucp': 'ops-old',
'dfs': 'usv',
}
make_into_team = [
'isoc-old',
'iahc',
]
change_parents = {
'bgpdepl': {'old':'ops','new':'ops-old'},
'cidrd': {'old':'ops','new':'ops-old'},
'eii': {'old':'ops','new':'ops-old'},
'netstat': {'old':'ops','new':'ops-old'},
'njm': {'old':'ops','new':'ops-old'},
'noop': {'old':'osi','new':'ops-old'},
'opstat': {'old':'ops','new':'ops-old'},
'thinosi': {'old':'app','new':'osi'},
'wpkops': {'old':'ops','new':'ops-old'},
'poised': {'old':'adm','new':'gen'},
'poised95': {'old':'adm','new':'gen'},
'ietfgrow': {'old':'adm','new':'gen'},
'stdguide': {'old':'adm','new':'usv'},
'inaparch': {'old':'adm','new':'gen'},
'intprop': {'old':'adm','new':'gen'},
'iahc': {'old':'adm', 'new':'gen' },
'newgen': {'old':'adm', 'new':'gen' },
}
def forward(apps, schema_editor):
Group = apps.get_model('group','Group')
Document = apps.get_model('doc','Document')
# Verify assumptions
for acronym in definite_bof_conc:
assert Group.objects.filter(acronym=acronym,state_id='conclude').exists(), '%s not found or not concluded'%acronym
for acronym in maybe_bof_conc:
assert Group.objects.filter(acronym=acronym,state_id='conclude').exists(), '%s not found or not concluded'%acronym
for acronym in had_no_parent:
assert Group.objects.filter(acronym=acronym,parent__isnull=True).exists(), '%s not found or has a parent' % acronym
for acronym in change_parents:
assert Group.objects.filter(acronym=acronym,parent__acronym=change_parents[acronym]['old']).exists(),'%s not found or parent is not %s'%(acronym,change_parents[acronym]['old'])
for acronym in make_into_team:
assert Group.objects.filter(acronym=acronym,type_id='wg').exists(),'%s not found or is not a WG'%acronym
Group.objects.filter(acronym__in=definite_bof_conc).update(state_id='bof-conc')
Group.objects.filter(acronym__in=maybe_bof_conc).update(state_id='bof-conc')
for acronym in had_no_parent:
g=Group.objects.get(acronym=acronym)
g.parent = Group.objects.get(acronym=had_no_parent[acronym])
g.save()
for acronym in change_parents:
g=Group.objects.get(acronym=acronym)
g.parent = Group.objects.get(acronym=change_parents[acronym]['new'])
g.save()
for acronym in make_into_team:
g=Group.objects.get(acronym=acronym)
g.type_id='team'
g.save()
gen = Group.objects.get(acronym='gen')
Document.objects.filter(name='draft-rescorla-sec-cons').update(group=gen)
Group.objects.filter(acronym='adm').delete()
def reverse(apps, schema_editor):
Group = apps.get_model('group','Group')
ChangeStateGroupEvent = apps.get_model('group','ChangeStateGroupEvent')
Person = apps.get_model('person','Person')
Document = apps.get_model('doc','Document')
# Reconstitute the adm area
adm = Group.objects.create(acronym='adm',
type_id='area',
name='ops',
state_id='unknown',
parent = Group.objects.get(acronym='iesg'),
)
Group.objects.filter(acronym__in=definite_bof_conc).update(state_id='conclude')
Group.objects.filter(acronym__in=maybe_bof_conc).update(state_id='conclude')
for acronym in had_no_parent:
g=Group.objects.get(acronym=acronym)
g.parent_id = None
g.save()
for acronym in change_parents:
g=Group.objects.get(acronym=acronym)
g.parent = Group.objects.get(acronym=change_parents[acronym]['old'])
g.save()
for acronym in make_into_team:
g=Group.objects.get(acronym=acronym)
g.type_id = 'wg'
g.save()
adm.communitylist_set.create()
create_time = datetime.datetime(2011,12,9,12,0,0)
event_time = datetime.datetime(1997,1,1,12, 0,0)
system = Person.objects.get(name='(System)')
names = [
'Dr. Borka Jerman-Blazic',
'Stephen J. Coya',
'Piet Bovenga',
'Bernhard Stockman',
'Paul-Andre Pays',
'Brian Gilmore',
'Jill Foster',
'Dr. Klaus Truoel',
'Jean-Paul Le Guigner',
'Urs Eppenberger',
'Christian Tschudin',
'David Oran',
]
persons = dict()
for name in names:
persons[name] = Person.objects.get(name=name)
adm.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
adm.role_set.create(name_id='ad',person=persons['David Oran'],email=persons['David Oran'].email_set.first())
g = Group.objects.create(name='Working Group on International Character Sets',
acronym='wg-char',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Dr. Borka Jerman-Blazic'],email=persons['Dr. Borka Jerman-Blazic'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Informational Services and User Support',
acronym='wg-isus',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Jill Foster'],email=persons['Jill Foster'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Lower Layers Technology',
acronym='wg-llt',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Piet Bovenga'],email=persons['Piet Bovenga'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Network Applications Support',
acronym='wg-nap',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Paul-Andre Pays'],email=persons['Paul-Andre Pays'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Network Operations',
acronym='wg-nop',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Bernhard Stockman'],email=persons['Bernhard Stockman'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Security Technology',
acronym='wg-sec',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Dr. Klaus Truoel'],email=persons['Dr. Klaus Truoel'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Message Handeling Systems',
acronym='wg1',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Urs Eppenberger'],email=persons['Urs Eppenberger'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='File Transfer, Access and Management',
acronym='wg2',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Jean-Paul Le Guigner'],email=persons['Jean-Paul Le Guigner'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Network Operations and X.25',
acronym='wg4',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Piet Bovenga'],email=persons['Piet Bovenga'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Full Screen Services',
acronym='wg5',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Brian Gilmore'],email=persons['Brian Gilmore'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
g = Group.objects.create(name='Management of Network Application Services',
acronym='wg8',
time=create_time,
parent=adm,
type_id='wg',
state_id='conclude')
ChangeStateGroupEvent.objects.create(group=g,time=event_time,by=system,desc='Concluded group',state_id='conclude')
g.role_set.create(name_id='chair',person=persons['Christian Tschudin'],email=persons['Christian Tschudin'].email_set.first())
g.role_set.create(name_id='ad',person=persons['Stephen J. Coya'],email=persons['Stephen J. Coya'].email_set.first())
Document.objects.filter(name='draft-rescorla-sec-cons').update(group=adm)
class Migration(migrations.Migration):
dependencies = [
('group', '0006_auto_20150718_0509'),
('doc', '0012_auto_20160207_0537'),
('person', '0005_deactivate_unknown_email'),
('community','0002_auto_20141222_1749'),
]
operations = [
migrations.RunPython(forward, reverse)
]