diff --git a/ietf/community/migrations/0001_initial.py b/ietf/community/migrations/0001_initial.py index 76069743a..44ddb6200 100644 --- a/ietf/community/migrations/0001_initial.py +++ b/ietf/community/migrations/0001_initial.py @@ -1,11 +1,16 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models class Migration(migrations.Migration): + initial = True + dependencies = [ ] @@ -13,78 +18,23 @@ class Migration(migrations.Migration): migrations.CreateModel( name='CommunityList', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('secret', models.CharField(max_length=255, null=True, blank=True)), - ('cached', models.TextField(null=True, blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='DisplayConfiguration', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('sort_method', models.CharField(default=b'by_filename', max_length=100, choices=[(b'by_filename', b'Alphabetical by I-D filename and RFC number'), (b'by_title', b'Alphabetical by document title'), (b'by_wg', b'Alphabetical by associated WG'), (b'date_publication', b'Date of publication of current version of the document'), (b'recent_change', b'Date of most recent change of status of any type'), (b'recent_significant', b'Date of most recent significant change of status')])), - ('display_fields', models.TextField(default=b'filename,title,date')), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='DocumentChangeDates', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('new_version_date', models.DateTimeField(null=True, blank=True)), - ('normal_change_date', models.DateTimeField(null=True, blank=True)), - ('significant_change_date', models.DateTimeField(null=True, blank=True)), - ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='EmailSubscription', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('email', models.CharField(max_length=200)), - ('significant', models.BooleanField(default=False)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('notify_on', models.CharField(choices=[(b'all', b'All changes'), (b'significant', b'Only significant state changes')], default=b'all', max_length=30)), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( - name='ExpectedChange', + name='SearchRule', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('expected_date', models.DateField(verbose_name=b'Expected date')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('rule_type', models.CharField(choices=[(b'group', b'All I-Ds associated with a particular group'), (b'area', b'All I-Ds associated with all groups in a particular Area'), (b'group_rfc', b'All RFCs associated with a particular group'), (b'area_rfc', b'All RFCs associated with all groups in a particular Area'), (b'state_iab', b'All I-Ds that are in a particular IAB state'), (b'state_iana', b'All I-Ds that are in a particular IANA state'), (b'state_iesg', b'All I-Ds that are in a particular IESG state'), (b'state_irtf', b'All I-Ds that are in a particular IRTF state'), (b'state_ise', b'All I-Ds that are in a particular ISE state'), (b'state_rfceditor', b'All I-Ds that are in a particular RFC Editor state'), (b'state_ietf', b'All I-Ds that are in a particular Working Group state'), (b'author', b'All I-Ds with a particular author'), (b'author_rfc', b'All RFCs with a particular author'), (b'ad', b'All I-Ds with a particular responsible AD'), (b'shepherd', b'All I-Ds with a particular document shepherd'), (b'name_contains', b'All I-Ds with particular text/regular expression in the name')], max_length=30)), + ('text', models.CharField(blank=True, default=b'', max_length=255, verbose_name=b'Text/RegExp')), + ('community_list', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='community.CommunityList')), ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ListNotification', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('significant', models.BooleanField(default=False)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Rule', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('rule_type', models.CharField(max_length=30, choices=[(b'wg_asociated', b'All I-Ds associated with a particular WG'), (b'area_asociated', b'All I-Ds associated with all WGs in a particular Area'), (b'ad_responsible', b'All I-Ds with a particular responsible AD'), (b'author', b'All I-Ds with a particular author'), (b'shepherd', b'All I-Ds with a particular document shepherd'), (b'with_text', b'All I-Ds that contain a particular text string in the name'), (b'in_iab_state', b'All I-Ds that are in a particular IAB state'), (b'in_iana_state', b'All I-Ds that are in a particular IANA state'), (b'in_iesg_state', b'All I-Ds that are in a particular IESG state'), (b'in_irtf_state', b'All I-Ds that are in a particular IRTF state'), (b'in_ise_state', b'All I-Ds that are in a particular ISE state'), (b'in_rfcEdit_state', b'All I-Ds that are in a particular RFC Editor state'), (b'in_wg_state', b'All I-Ds that are in a particular Working Group state'), (b'wg_asociated_rfc', b'All RFCs associated with a particular WG'), (b'area_asociated_rfc', b'All RFCs associated with all WGs in a particular Area'), (b'author_rfc', b'All RFCs with a particular author')])), - ('value', models.CharField(max_length=255)), - ('last_updated', models.DateTimeField(auto_now=True)), - ], - options={ - }, - bases=(models.Model,), ), ] diff --git a/ietf/community/migrations/0002_auto_20141222_1749.py b/ietf/community/migrations/0002_auto_20141222_1749.py deleted file mode 100644 index f50f7d07d..000000000 --- a/ietf/community/migrations/0002_auto_20141222_1749.py +++ /dev/null @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('community', '0001_initial'), - ('doc', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='rule', - name='cached_ids', - field=models.ManyToManyField(to='doc.Document'), - preserve_default=True, - ), - migrations.AddField( - model_name='rule', - name='community_list', - field=models.ForeignKey(to='community.CommunityList'), - preserve_default=True, - ), - migrations.AlterUniqueTogether( - name='rule', - unique_together=set([('community_list', 'rule_type', 'value')]), - ), - migrations.AddField( - model_name='listnotification', - name='event', - field=models.ForeignKey(to='doc.DocEvent'), - preserve_default=True, - ), - migrations.AddField( - model_name='expectedchange', - name='community_list', - field=models.ForeignKey(to='community.CommunityList'), - preserve_default=True, - ), - migrations.AddField( - model_name='expectedchange', - name='document', - field=models.ForeignKey(to='doc.Document'), - preserve_default=True, - ), - migrations.AddField( - model_name='emailsubscription', - name='community_list', - field=models.ForeignKey(to='community.CommunityList'), - preserve_default=True, - ), - migrations.AddField( - model_name='documentchangedates', - name='document', - field=models.ForeignKey(to='doc.Document'), - preserve_default=True, - ), - migrations.AddField( - model_name='displayconfiguration', - name='community_list', - field=models.ForeignKey(to='community.CommunityList'), - preserve_default=True, - ), - migrations.AddField( - model_name='communitylist', - name='added_ids', - field=models.ManyToManyField(to='doc.Document'), - preserve_default=True, - ), - migrations.AddField( - model_name='communitylist', - name='group', - field=models.ForeignKey(blank=True, to='group.Group', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='communitylist', - name='user', - field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True), - preserve_default=True, - ), - ] diff --git a/ietf/community/migrations/0003_cleanup.py b/ietf/community/migrations/0003_cleanup.py deleted file mode 100644 index f90283127..000000000 --- a/ietf/community/migrations/0003_cleanup.py +++ /dev/null @@ -1,120 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0004_auto_20150308_0440'), - ('doc', '0010_auto_20150930_0251'), - ('group', '0006_auto_20150718_0509'), - ('community', '0002_auto_20141222_1749'), - ] - - operations = [ - migrations.RenameModel( - old_name='Rule', - new_name='SearchRule', - ), - migrations.RemoveField( - model_name='displayconfiguration', - name='community_list', - ), - migrations.DeleteModel( - name='DisplayConfiguration', - ), - migrations.RemoveField( - model_name='documentchangedates', - name='document', - ), - migrations.DeleteModel( - name='DocumentChangeDates', - ), - migrations.RemoveField( - model_name='expectedchange', - name='community_list', - ), - migrations.RemoveField( - model_name='expectedchange', - name='document', - ), - migrations.DeleteModel( - name='ExpectedChange', - ), - migrations.RemoveField( - model_name='listnotification', - name='event', - ), - migrations.DeleteModel( - name='ListNotification', - ), - migrations.RemoveField( - model_name='searchrule', - name='cached_ids', - ), - migrations.RenameField( - model_name='communitylist', - old_name='added_ids', - new_name='added_docs', - ), - migrations.RemoveField( - model_name='communitylist', - name='cached', - ), - migrations.RemoveField( - model_name='communitylist', - name='secret', - ), - migrations.AddField( - model_name='searchrule', - name='group', - field=models.ForeignKey(blank=True, to='group.Group', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='searchrule', - name='person', - field=models.ForeignKey(blank=True, to='person.Person', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='searchrule', - name='state', - field=models.ForeignKey(blank=True, to='doc.State', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='searchrule', - name='text', - field=models.CharField(default=b'', max_length=255, verbose_name=b'Text/RegExp', blank=True), - preserve_default=True, - ), - migrations.RemoveField( - model_name='searchrule', - name='last_updated', - ), - migrations.AlterField( - model_name='searchrule', - name='rule_type', - field=models.CharField(max_length=30, choices=[(b'group', b'All I-Ds associated with a particular group'), (b'area', b'All I-Ds associated with all groups in a particular Area'), (b'group_rfc', b'All RFCs associated with a particular group'), (b'area_rfc', b'All RFCs associated with all groups in a particular Area'), (b'state_iab', b'All I-Ds that are in a particular IAB state'), (b'state_iana', b'All I-Ds that are in a particular IANA state'), (b'state_iesg', b'All I-Ds that are in a particular IESG state'), (b'state_irtf', b'All I-Ds that are in a particular IRTF state'), (b'state_ise', b'All I-Ds that are in a particular ISE state'), (b'state_rfceditor', b'All I-Ds that are in a particular RFC Editor state'), (b'state_ietf', b'All I-Ds that are in a particular Working Group state'), (b'author', b'All I-Ds with a particular author'), (b'author_rfc', b'All RFCs with a particular author'), (b'ad', b'All I-Ds with a particular responsible AD'), (b'shepherd', b'All I-Ds with a particular document shepherd'), (b'name_contains', b'All I-Ds with particular text/regular expression in the name')]), - preserve_default=True, - ), - migrations.AlterUniqueTogether( - name='searchrule', - unique_together=set([]), - ), - migrations.AddField( - model_name='emailsubscription', - name='notify_on', - field=models.CharField(default=b'all', max_length=30, choices=[(b'all', b'All changes'), (b'significant', b'Only significant state changes')]), - preserve_default=True, - ), - migrations.AddField( - model_name='searchrule', - name='name_contains_index', - field=models.ManyToManyField(to='doc.Document'), - preserve_default=True, - ), - ] diff --git a/ietf/community/migrations/0004_cleanup_data.py b/ietf/community/migrations/0004_cleanup_data.py deleted file mode 100644 index ab1c24f4e..000000000 --- a/ietf/community/migrations/0004_cleanup_data.py +++ /dev/null @@ -1,259 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import re -from django.db import migrations, models - -def port_rules_to_typed_system(apps, schema_editor): - SearchRule = apps.get_model("community", "SearchRule") - State = apps.get_model("doc", "State") - Group = apps.get_model("group", "Group") - Person = apps.get_model("person", "Person") - - draft_active = State.objects.get(type="draft", slug="active") - draft_rfc = State.objects.get(type="draft", slug="rfc") - - def try_to_uniquify_person(rule, person_qs): - if rule.community_list.user and len(person_qs) > 1: - user_specific_qs = person_qs.filter(user=rule.community_list.user) - if len(user_specific_qs) > 0 and len(user_specific_qs) < len(person_qs): - return user_specific_qs - - return person_qs - - - for rule in SearchRule.objects.all(): - handled = False - - if rule.rule_type in ['wg_asociated', 'area_asociated', 'wg_asociated_rfc', 'area_asociated_rfc']: - try: - rule.group = Group.objects.get(acronym=rule.value) - - if rule.rule_type in ['wg_asociated_rfc', 'area_asociated_rfc']: - rule.state = draft_rfc - else: - rule.state = draft_active - handled = True - except Group.DoesNotExist: - pass - - - elif rule.rule_type in ['in_iab_state', 'in_iana_state', 'in_iesg_state', 'in_irtf_state', 'in_ise_state', 'in_rfcEdit_state', 'in_wg_state']: - state_types = { - 'in_iab_state': 'draft-stream-iab', - 'in_iana_state': 'draft-iana-review', - 'in_iesg_state': 'draft-iesg', - 'in_irtf_state': 'draft-stream-irtf', - 'in_ise_state': 'draft-stream-ise', - 'in_rfcEdit_state': 'draft-rfceditor', - 'in_wg_state': 'draft-stream-ietf', - } - - try: - rule.state = State.objects.get(type=state_types[rule.rule_type], slug=rule.value) - handled = True - except State.DoesNotExist: - pass - - - elif rule.rule_type in ["author", "author_rfc"]: - found_persons = list(try_to_uniquify_person(rule, Person.objects.filter(documentauthor__id__gte=1).filter(name__icontains=rule.value).distinct())) - - if found_persons: - rule.person = found_persons[0] - rule.state = draft_active - - for p in found_persons[1:]: - SearchRule.objects.create( - community_list=rule.community_list, - rule_type=rule.rule_type, - state=rule.state, - person=p, - ) - #print "created", rule.rule_type, p.name - - handled = True - - elif rule.rule_type == "ad_responsible": - try: - rule.person = Person.objects.get(id=rule.value) - rule.state = draft_active - handled = True - except Person.DoesNotExist: - pass - - - elif rule.rule_type == "shepherd": - found_persons = list(try_to_uniquify_person(rule, Person.objects.filter(email__shepherd_document_set__type="draft").filter(name__icontains=rule.value).distinct())) - - if found_persons: - rule.person = found_persons[0] - rule.state = draft_active - - for p in found_persons[1:]: - SearchRule.objects.create( - community_list=rule.community_list, - rule_type=rule.rule_type, - state=rule.state, - person=p, - ) - #print "created", rule.rule_type, p.name - - handled = True - - elif rule.rule_type == "with_text": - rule.state = draft_active - - if rule.value: - rule.text = rule.value - handled = True - - if handled: - rule.save() - else: - rule.delete() - #print "NOT HANDLED", rule.pk, rule.rule_type, rule.value - -def delete_extra_person_rules(apps, schema_editor): - SearchRule = apps.get_model("community", "SearchRule") - SearchRule.objects.exclude(person=None).filter(value="").delete() - -RENAMED_RULES = [ - ('wg_asociated', 'group'), - ('area_asociated', 'area'), - ('wg_asociated_rfc', 'group_rfc'), - ('area_asociated_rfc', 'area_rfc'), - - ('in_iab_state', 'state_iab'), - ('in_iana_state', 'state_iana'), - ('in_iesg_state', 'state_iesg'), - ('in_irtf_state', 'state_irtf'), - ('in_ise_state', 'state_ise'), - ('in_rfcEdit_state', 'state_rfceditor'), - ('in_wg_state', 'state_ietf'), - - ('ad_responsible', 'ad'), - - ('with_text', 'name_contains'), -] - -def rename_rule_type_forwards(apps, schema_editor): - SearchRule = apps.get_model("community", "SearchRule") - - renamings = dict(RENAMED_RULES) - - for r in SearchRule.objects.all(): - if r.rule_type in renamings: - r.rule_type = renamings[r.rule_type] - r.save() - -def rename_rule_type_backwards(apps, schema_editor): - SearchRule = apps.get_model("community", "SearchRule") - - renamings = dict((to, fro) for fro, to in RENAMED_RULES) - - for r in SearchRule.objects.all(): - if r.rule_type in renamings: - r.rule_type = renamings[r.rule_type] - r.save() - -def get_rid_of_empty_lists(apps, schema_editor): - CommunityList = apps.get_model("community", "CommunityList") - - for cl in CommunityList.objects.filter(added_docs=None, searchrule=None, emailsubscription=None): - cl.delete() - -def move_email_subscriptions_to_preregistered_email(apps, schema_editor): - EmailSubscription = apps.get_model("community", "EmailSubscription") - Email = apps.get_model("person", "Email") - Person = apps.get_model("person", "Person") - - for e in EmailSubscription.objects.all(): - email_obj = None - try: - email_obj = Email.objects.get(address=e.email) - except Email.DoesNotExist: - if e.community_list.user: - person = Person.objects.filter(user=e.community_list.user).first() - - #print "creating", e.email, person.ascii - # we'll register it on the user, on the assumption - # that the user and the subscriber is the same person - email_obj = Email.objects.create( - address=e.email, - person=person, - ) - - if not email_obj: - print "deleting", e.email - e.delete() - -def fill_in_notify_on(apps, schema_editor): - EmailSubscription = apps.get_model("community", "EmailSubscription") - - EmailSubscription.objects.filter(significant=False).update(notify_on="all") - EmailSubscription.objects.filter(significant=True).update(notify_on="significant") - -def add_group_community_lists(apps, schema_editor): - Group = apps.get_model("group", "Group") - DocAlias = apps.get_model("doc", "DocAlias") - State = apps.get_model("doc", "State") - CommunityList = apps.get_model("community", "CommunityList") - SearchRule = apps.get_model("community", "SearchRule") - - active_state = State.objects.get(slug="active", type="draft") - rfc_state = State.objects.get(slug="rfc", type="draft") - - draft_aliases = DocAlias.objects.filter(name__startswith="draft") - - for g in Group.objects.filter(type__in=("rg", "wg")): - clist = CommunityList.objects.filter(group=g).first() - if clist: - SearchRule.objects.get_or_create(community_list=clist, rule_type="group", group=g, state=active_state) - SearchRule.objects.get_or_create(community_list=clist, rule_type="group_rfc", group=g, state=rfc_state) - r, _ = SearchRule.objects.get_or_create(community_list=clist, rule_type="name_contains", text=r"^draft-[^-]+-%s-" % g.acronym, state=active_state) - - # do the matching manually in Python to speed up the operation - #r.name_contains_index = Document.objects.filter(docalias__name__regex=r.text) - name_re = re.compile(r.text) - r.name_contains_index = [ a.document_id for a in draft_aliases if name_re.match(a.name) ] - - else: - clist = CommunityList.objects.create(group=g) - SearchRule.objects.create(community_list=clist, rule_type="group", group=g, state=active_state) - SearchRule.objects.create(community_list=clist, rule_type="group_rfc", group=g, state=rfc_state) - r = SearchRule.objects.create(community_list=clist, rule_type="name_contains", text=r"^draft-[^-]+-%s-" % g.acronym, state=active_state) - name_re = re.compile(r.text) - r.name_contains_index = [ a.document_id for a in draft_aliases if name_re.match(a.name) ] - -def noop(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('community', '0003_cleanup'), - ] - - operations = [ - migrations.RunPython(port_rules_to_typed_system, delete_extra_person_rules), - migrations.RunPython(rename_rule_type_forwards, rename_rule_type_backwards), - migrations.RunPython(move_email_subscriptions_to_preregistered_email, noop), - migrations.RunPython(get_rid_of_empty_lists, noop), - migrations.RunPython(fill_in_notify_on, noop), - migrations.RunPython(add_group_community_lists, noop), - migrations.RemoveField( - model_name='searchrule', - name='value', - ), - migrations.AlterField( - model_name='emailsubscription', - name='email', - field=models.ForeignKey(to='person.Email'), - preserve_default=True, - ), - migrations.RemoveField( - model_name='emailsubscription', - name='significant', - ), - ] diff --git a/ietf/dbtemplate/migrations/0001_initial.py b/ietf/dbtemplate/migrations/0001_initial.py index d650a591b..cc8a64a0f 100644 --- a/ietf/dbtemplate/migrations/0001_initial.py +++ b/ietf/dbtemplate/migrations/0001_initial.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): + initial = True + dependencies = [ ] @@ -13,14 +16,11 @@ class Migration(migrations.Migration): migrations.CreateModel( name='DBTemplate', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('path', models.CharField(unique=True, max_length=255)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('path', models.CharField(max_length=255, unique=True)), ('title', models.CharField(max_length=255)), - ('variables', models.TextField(null=True, blank=True)), + ('variables', models.TextField(blank=True, null=True)), ('content', models.TextField()), ], - options={ - }, - bases=(models.Model,), ), ] diff --git a/ietf/dbtemplate/migrations/0002_auto_20141222_1749.py b/ietf/dbtemplate/migrations/0002_auto_20141222_1749.py deleted file mode 100644 index 3cd04cdd0..000000000 --- a/ietf/dbtemplate/migrations/0002_auto_20141222_1749.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0001_initial'), - ('name', '0001_initial'), - ('dbtemplate', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='dbtemplate', - name='group', - field=models.ForeignKey(blank=True, to='group.Group', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dbtemplate', - name='type', - field=models.ForeignKey(to='name.DBTemplateTypeName'), - preserve_default=True, - ), - ] diff --git a/ietf/dbtemplate/migrations/0003_review_summary_email.py b/ietf/dbtemplate/migrations/0003_review_summary_email.py deleted file mode 100644 index 3fa6ffbe6..000000000 --- a/ietf/dbtemplate/migrations/0003_review_summary_email.py +++ /dev/null @@ -1,152 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - Group = apps.get_model('group','Group') - - DBTemplate.objects.create( - path='/group/defaults/email/open_assignments.txt', - title='Default template for review team open assignment summary email', - type_id='django', - group=None, - content="""{% autoescape off %}Subject: Open review assignments in {{group.acronym}} - -The following reviewers have assignments:{% for r in review_requests %}{% ifchanged r.section %} - -{{r.section}} - -{% if r.section == 'Early review requests:' %}Reviewer Due Draft{% else %}Reviewer LC end Draft{% endif %}{% endifchanged %} -{{ r.reviewer.person.plain_name|ljust:"22" }} {% if r.section == 'Early review requests:' %}{{ r.deadline|date:"Y-m-d" }}{% else %}{{ r.lastcall_ends|default:"None " }}{% endif %} {{ r.doc_id }}-{% if r.requested_rev %}{{ r.requested_rev }}{% else %}{{ r.doc.rev }}{% endif %} {{ r.earlier_review_mark }}{% endfor %} - -* Other revision previously reviewed -** This revision already reviewed - -{% if rotation_list %}Next in the reviewer rotation: - -{% for p in rotation_list %} {{ p }} -{% endfor %}{% endif %}{% endautoescape %} -""" - ) - - DBTemplate.objects.create( - path='/group/genart/email/open_assignments.txt', - title='Genart open assignment summary', - type_id='django', - group=Group.objects.get(acronym='genart'), - content="""{% autoescape off %}Subject: Review Assignments - -Hi all, - -The following reviewers have assignments:{% for r in review_requests %}{% ifchanged r.section %} - -{{r.section}} - -{% if r.section == 'Early review requests:' %}Reviewer Due Draft{% else %}Reviewer LC end Draft{% endif %}{% endifchanged %} -{{ r.reviewer.person.plain_name|ljust:"22" }} {% if r.section == 'Early review requests:' %}{{ r.deadline|date:"Y-m-d" }}{% else %}{{ r.lastcall_ends|default:"None " }}{% endif %} {{ r.doc_id }}-{% if r.requested_rev %}{{ r.requested_rev }}{% else %}{{ r.doc.rev }}{% endif %} {{ r.earlier_review_mark }}{% endfor %} - -* Other revision previously reviewed -** This revision already reviewed - -{% if rotation_list %}Next in the reviewer rotation: - -{% for p in rotation_list %} {{ p }} -{% endfor %}{% endif %} -The LC and Telechat review templates are included below: -------------------------------------------------------- - --- Begin LC Template -- -I am the assigned Gen-ART reviewer for this draft. The General Area -Review Team (Gen-ART) reviews all IETF documents being processed -by the IESG for the IETF Chair. Please treat these comments just -like any other last call comments. - -For more information, please see the FAQ at - -. - -Document: -Reviewer: -Review Date: -IETF LC End Date: -IESG Telechat date: (if known) - -Summary: - -Major issues: - -Minor issues: - -Nits/editorial comments: - --- End LC Template -- - --- Begin Telechat Template -- -I am the assigned Gen-ART reviewer for this draft. The General Area -Review Team (Gen-ART) reviews all IETF documents being processed -by the IESG for the IETF Chair. Please wait for direction from your -document shepherd or AD before posting a new version of the draft. - -For more information, please see the FAQ at - -. - -Document: -Reviewer: -Review Date: -IETF LC End Date: -IESG Telechat date: (if known) - -Summary: - -Major issues: - -Minor issues: - -Nits/editorial comments: - --- End Telechat Template -- -{% endautoescape %} -""" - ) - - DBTemplate.objects.create( - path='/group/secdir/email/open_assignments.txt', - title='Secdir open assignment summary', - type_id='django', - group=Group.objects.get(acronym='secdir'), - content="""{% autoescape off %}Subject: Assignments - -Review instructions and related resources are at: -http://tools.ietf.org/area/sec/trac/wiki/SecDirReview{% for r in review_requests %}{% ifchanged r.section %} - -{{r.section}} - -{% if r.section == 'Early review requests:' %}Reviewer Due Draft{% else %}Reviewer LC end Draft{% endif %}{% endifchanged %} -{{ r.reviewer.person.plain_name|ljust:"22" }}{{ r.earlier_review|yesno:'R, , ' }}{% if r.section == 'Early review requests:' %}{{ r.deadline|date:"Y-m-d" }}{% else %}{{ r.lastcall_ends|default:"None " }}{% endif %} {{ r.doc_id }}-{% if r.requested_rev %}{{ r.requested_rev }}{% else %}{{ r.doc.rev }}{% endif %}{% endfor %} - -{% if rotation_list %}Next in the reviewer rotation: - -{% for p in rotation_list %} {{ p }} -{% endfor %}{% endif %}{% endautoescape %} -""" - ) - -def reverse(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - DBTemplate.objects.filter(path__in=['/group/defaults/email/open_assignments.txt', - '/group/genart/email/open_assignments.txt', - '/group/secdir/email/open_assignments.txt',]).delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('dbtemplate', '0002_auto_20141222_1749'), - ('group', '0009_auto_20150930_0758'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/dbtemplate/migrations/0004_team_review_content_templates.py b/ietf/dbtemplate/migrations/0004_team_review_content_templates.py deleted file mode 100644 index 8b86737a4..000000000 --- a/ietf/dbtemplate/migrations/0004_team_review_content_templates.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - Group = apps.get_model('group','Group') - - DBTemplate.objects.create( - path='/group/genart/review/content_templates/lc.txt', - title='Template for genart last call reviews', - type_id='django', - group=Group.objects.get(acronym='genart'), - content="""I am the assigned Gen-ART reviewer for this draft. The General Area -Review Team (Gen-ART) reviews all IETF documents being processed -by the IESG for the IETF Chair. Please treat these comments just -like any other last call comments. - -For more information, please see the FAQ at - -. - -Document: {{ review_req.doc.name }}-?? -Reviewer: {{ review_req.reviewer.person.plain_name }} -Review Date: {{ today }} -IETF LC End Date: {% if review_req.doc.most_recent_ietflc %}{{ review_req.doc.most_recent_ietflc.expires|date:"Y-m-d" }}{% else %}None{% endif %} -IESG Telechat date: {{ review_req.doc.telechat_date|default:'Not scheduled for a telechat }} - -Summary: - -Major issues: - -Minor issues: - -Nits/editorial comments: -""" - ) - DBTemplate.objects.create( - path='/group/genart/review/content_templates/telechat.txt', - title='Template for genart telechat reviews', - type_id='django', - group=Group.objects.get(acronym='genart'), - content="""I am the assigned Gen-ART reviewer for this draft. The General Area -Review Team (Gen-ART) reviews all IETF documents being processed -by the IESG for the IETF Chair. Please wait for direction from your -document shepherd or AD before posting a new version of the draft. - -For more information, please see the FAQ at - -. - -Document: {{ review_req.doc.name }}-?? -Reviewer: {{ review_req.reviewer.person.plain_name }} -Review Date: {{ today }} -IETF LC End Date: {% if review_req.doc.most_recent_ietflc %}{{ review_req.doc.most_recent_ietflc.expires|date:"Y-m-d" }}{% else %}None{% endif %} -IESG Telechat date: {{ review_req.doc.telechat_date|default:'Not scheduled for a telechat' }} - -Summary: - -Major issues: - -Minor issues: - -Nits/editorial comments: -""" - ) - -def reverse(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - DBTemplate.objects.filter(path__in=['/group/genart/review/content_templates/lc.txt','/group/genart/review/content_templates/telechat.txt']).delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('dbtemplate', '0003_review_summary_email'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/dbtemplate/migrations/0005_add_default_topic_description.py b/ietf/dbtemplate/migrations/0005_add_default_topic_description.py deleted file mode 100644 index 47dc1efad..000000000 --- a/ietf/dbtemplate/migrations/0005_add_default_topic_description.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-24 09:30 -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - DBTemplate.objects.create( - path='/nomcom/defaults/topic/description', - title='Description of Topic', - variables='$topic: Topic', - type_id='rst', - content="""This is a description of the topic "$topic" - -Describe the topic and add any information/instructions for the responder here. -""", - ) - -def reverse(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - DBTemplate.objects.filter(path='/nomcom/defaults/topic/description').delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('dbtemplate', '0004_team_review_content_templates'), - ] - - operations = [ - migrations.RunPython(forward,reverse), - ] diff --git a/ietf/dbtemplate/migrations/0006_adjust_feedback_receipt_template.py b/ietf/dbtemplate/migrations/0006_adjust_feedback_receipt_template.py deleted file mode 100644 index fc19c21b5..000000000 --- a/ietf/dbtemplate/migrations/0006_adjust_feedback_receipt_template.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-24 14:54 -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_migration): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - t = DBTemplate.objects.get(path='/nomcom/defaults/email/feedback_receipt.txt') - t.variables="""$about: What this feedback is about -$comments: Comments on whatever the feedback is about -""" - t.content="""Hi, - -Your input regarding $about has been received and registered. - -The following comments have been registered: - --------------------------------------------------------------------------- -$comments --------------------------------------------------------------------------- - -Thank you, -""" - t.save() - -def reverse(apps, schema_migration): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - t = DBTemplate.objects.get(path='/nomcom/defaults/email/feedback_receipt.txt') - t.variables="""$nominee: Full name of the nominee -$position: Nomination position -$comments: Comments on this candidate -""" - t.content="""Hi, - -Your input regarding $nominee for the position of -$position has been received and registered. - -The following comments have been registered: - --------------------------------------------------------------------------- -$comments --------------------------------------------------------------------------- - -Thank you, -""" - t.save() -class Migration(migrations.Migration): - - dependencies = [ - ('dbtemplate', '0005_add_default_topic_description'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/doc/migrations/0001_initial.py b/ietf/doc/migrations/0001_initial.py index c3cfc66eb..ba3edeef3 100644 --- a/ietf/doc/migrations/0001_initial.py +++ b/ietf/doc/migrations/0001_initial.py @@ -1,12 +1,18 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations import datetime +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models class Migration(migrations.Migration): + initial = True + dependencies = [ ('name', '0001_initial'), ('person', '0001_initial'), @@ -16,7 +22,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='BallotType', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('slug', models.SlugField()), ('name', models.CharField(max_length=255)), ('question', models.TextField(blank=True)), @@ -26,88 +32,51 @@ class Migration(migrations.Migration): options={ 'ordering': ['order'], }, - bases=(models.Model,), ), migrations.CreateModel( name='DeletedEvent', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('json', models.TextField(help_text=b'Deleted object in JSON format, with attribute names chosen to be suitable for passing into the relevant create method.')), ('time', models.DateTimeField(default=datetime.datetime.now)), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='DocAlias', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=255, db_index=True)), + ('name', models.CharField(max_length=255, primary_key=True, serialize=False)), ], options={ 'verbose_name': 'document alias', 'verbose_name_plural': 'document aliases', }, - bases=(models.Model,), ), migrations.CreateModel( name='DocEvent', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('time', models.DateTimeField(default=datetime.datetime.now, help_text=b'When the event happened', db_index=True)), - ('type', models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested')])), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(db_index=True, default=datetime.datetime.now, help_text=b'When the event happened')), + ('type', models.CharField(choices=[(b'new_revision', b'Added new revision'), (b'new_submission', b'Uploaded new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'edited_authors', b'Edited the documents author list'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor'), (b'requested_review', b'Requested review'), (b'assigned_review_request', b'Assigned review request'), (b'closed_review_request', b'Closed review request'), (b'downref_approved', b'Downref approved')], max_length=50)), + ('rev', models.CharField(blank=True, max_length=16, null=True, verbose_name=b'revision')), ('desc', models.TextField()), ], options={ 'ordering': ['-time', '-id'], }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ConsensusDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('consensus', models.NullBooleanField(default=None)), - ], - options={ - }, - bases=('doc.docevent',), - ), - migrations.CreateModel( - name='BallotPositionDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('discuss', models.TextField(help_text=b'Discuss text if position is discuss', blank=True)), - ('discuss_time', models.DateTimeField(help_text=b'Time discuss text was written', null=True, blank=True)), - ('comment', models.TextField(help_text=b'Optional comment', blank=True)), - ('comment_time', models.DateTimeField(help_text=b'Time optional comment was written', null=True, blank=True)), - ], - options={ - }, - bases=('doc.docevent',), - ), - migrations.CreateModel( - name='BallotDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ], - options={ - }, - bases=('doc.docevent',), ), migrations.CreateModel( name='DocHistory', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), - ('title', models.CharField(max_length=255)), + ('title', models.CharField(max_length=255, validators=[django.core.validators.RegexValidator(message='Please enter a string without control characters.', regex='^[^\x00-\x1f]*$')])), ('abstract', models.TextField(blank=True)), - ('rev', models.CharField(max_length=16, verbose_name=b'revision', blank=True)), - ('pages', models.IntegerField(null=True, blank=True)), - ('order', models.IntegerField(default=1, blank=True)), - ('expires', models.DateTimeField(null=True, blank=True)), - ('notify', models.CharField(max_length=255, blank=True)), + ('rev', models.CharField(blank=True, max_length=16, verbose_name=b'revision')), + ('pages', models.IntegerField(blank=True, null=True)), + ('words', models.IntegerField(blank=True, null=True)), + ('order', models.IntegerField(blank=True, default=1)), + ('expires', models.DateTimeField(blank=True, null=True)), + ('notify', models.CharField(blank=True, max_length=255)), ('external_url', models.URLField(blank=True)), ('note', models.TextField(blank=True)), ('internal_comments', models.TextField(blank=True)), @@ -117,192 +86,223 @@ class Migration(migrations.Migration): 'verbose_name': 'document history', 'verbose_name_plural': 'document histories', }, - bases=(models.Model,), ), migrations.CreateModel( name='DocHistoryAuthor', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('order', models.IntegerField()), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('affiliation', models.CharField(blank=True, help_text=b'Organization/company used by author for submission', max_length=100)), + ('country', models.CharField(blank=True, help_text=b'Country used by author for submission', max_length=255)), + ('order', models.IntegerField(default=1)), ], options={ 'ordering': ['document', 'order'], + 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='DocReminder', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('due', models.DateTimeField()), ('active', models.BooleanField(default=True)), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='Document', fields=[ ('time', models.DateTimeField(default=datetime.datetime.now)), - ('title', models.CharField(max_length=255)), + ('title', models.CharField(max_length=255, validators=[django.core.validators.RegexValidator(message='Please enter a string without control characters.', regex='^[^\x00-\x1f]*$')])), ('abstract', models.TextField(blank=True)), - ('rev', models.CharField(max_length=16, verbose_name=b'revision', blank=True)), - ('pages', models.IntegerField(null=True, blank=True)), - ('order', models.IntegerField(default=1, blank=True)), - ('expires', models.DateTimeField(null=True, blank=True)), - ('notify', models.CharField(max_length=255, blank=True)), + ('rev', models.CharField(blank=True, max_length=16, verbose_name=b'revision')), + ('pages', models.IntegerField(blank=True, null=True)), + ('words', models.IntegerField(blank=True, null=True)), + ('order', models.IntegerField(blank=True, default=1)), + ('expires', models.DateTimeField(blank=True, null=True)), + ('notify', models.CharField(blank=True, max_length=255)), ('external_url', models.URLField(blank=True)), ('note', models.TextField(blank=True)), ('internal_comments', models.TextField(blank=True)), - ('name', models.CharField(max_length=255, serialize=False, primary_key=True)), - ('ad', models.ForeignKey(related_name='ad_document_set', verbose_name=b'area director', blank=True, to='person.Person', null=True)), + ('name', models.CharField(max_length=255, primary_key=True, serialize=False, validators=[django.core.validators.RegexValidator(b'^[-a-z0-9]+$', b'Provide a valid document name consisting of lowercase letters, numbers and hyphens.', b'invalid')])), + ('ad', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ad_document_set', to='person.Person', verbose_name=b'area director')), + ('formal_languages', models.ManyToManyField(blank=True, help_text=b'Formal languages used in document', to='name.FormalLanguageName')), ], options={ 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='DocumentAuthor', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('affiliation', models.CharField(blank=True, help_text=b'Organization/company used by author for submission', max_length=100)), + ('country', models.CharField(blank=True, help_text=b'Country used by author for submission', max_length=255)), ('order', models.IntegerField(default=1)), - ('author', models.ForeignKey(help_text=b'Email address used by author for submission', to='person.Email')), - ('document', models.ForeignKey(to='doc.Document')), + ('document', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), + ('email', ietf.utils.models.ForeignKey(blank=True, help_text=b'Email address used by author for submission', null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Email')), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), ], options={ 'ordering': ['document', 'order'], + 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( - name='InitialReviewDocEvent', + name='DocumentURL', fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('expires', models.DateTimeField(null=True, blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('desc', models.CharField(blank=True, default=b'', max_length=255)), + ('url', models.URLField(max_length=512)), + ('doc', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), + ('tag', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocUrlTagName')), ], - options={ - }, - bases=('doc.docevent',), - ), - migrations.CreateModel( - name='LastCallDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('expires', models.DateTimeField(null=True, blank=True)), - ], - options={ - }, - bases=('doc.docevent',), - ), - migrations.CreateModel( - name='NewRevisionDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('rev', models.CharField(max_length=16)), - ], - options={ - }, - bases=('doc.docevent',), ), migrations.CreateModel( name='RelatedDocHistory', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('relationship', models.ForeignKey(to='name.DocRelationshipName')), - ('source', models.ForeignKey(to='doc.DocHistory')), - ('target', models.ForeignKey(related_name='reversely_related_document_history_set', to='doc.DocAlias')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('relationship', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocRelationshipName')), + ('source', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.DocHistory')), + ('target', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reversely_related_document_history_set', to='doc.DocAlias')), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='RelatedDocument', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('relationship', models.ForeignKey(to='name.DocRelationshipName')), - ('source', models.ForeignKey(to='doc.Document')), - ('target', models.ForeignKey(to='doc.DocAlias')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('relationship', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocRelationshipName')), + ('source', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), + ('target', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.DocAlias')), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='State', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('slug', models.SlugField()), ('name', models.CharField(max_length=255)), ('used', models.BooleanField(default=True)), ('desc', models.TextField(blank=True)), ('order', models.IntegerField(default=0)), - ('next_states', models.ManyToManyField(related_name='previous_states', to='doc.State', blank=True)), + ('next_states', models.ManyToManyField(blank=True, related_name='previous_states', to='doc.State')), ], options={ 'ordering': ['type', 'order'], }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='StateDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('state', models.ForeignKey(blank=True, to='doc.State', null=True)), - ], - options={ - }, - bases=('doc.docevent',), ), migrations.CreateModel( name='StateType', fields=[ - ('slug', models.CharField(max_length=30, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=30, primary_key=True, serialize=False)), ('label', models.CharField(help_text=b'Label that should be used (e.g. in admin) for state drop-down for this type of state', max_length=255)), ], - options={ - }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='AddedMessageEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ('msgtype', models.CharField(max_length=25)), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='BallotDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='BallotPositionDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ('discuss', models.TextField(blank=True, help_text=b'Discuss text if position is discuss')), + ('discuss_time', models.DateTimeField(blank=True, help_text=b'Time discuss text was written', null=True)), + ('comment', models.TextField(blank=True, help_text=b'Optional comment')), + ('comment_time', models.DateTimeField(blank=True, help_text=b'Time optional comment was written', null=True)), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='ConsensusDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ('consensus', models.NullBooleanField(default=None)), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='EditedAuthorsDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ('basis', models.CharField(help_text=b'What is the source or reasoning for the changes to the author list', max_length=255)), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='InitialReviewDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ('expires', models.DateTimeField(blank=True, null=True)), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='LastCallDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ('expires', models.DateTimeField(blank=True, null=True)), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='NewRevisionDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='ReviewRequestDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='StateDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ], + bases=('doc.docevent',), + ), + migrations.CreateModel( + name='SubmissionDocEvent', + fields=[ + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ], + bases=('doc.docevent',), ), migrations.CreateModel( name='TelechatDocEvent', fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('telechat_date', models.DateField(null=True, blank=True)), + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ('telechat_date', models.DateField(blank=True, null=True)), ('returning_item', models.BooleanField(default=False)), ], - options={ - }, bases=('doc.docevent',), ), migrations.CreateModel( name='WriteupDocEvent', fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), + ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), ('text', models.TextField(blank=True)), ], - options={ - }, bases=('doc.docevent',), ), - migrations.AddField( - model_name='statedocevent', - name='state_type', - field=models.ForeignKey(to='doc.StateType'), - preserve_default=True, - ), migrations.AddField( model_name='state', name='type', - field=models.ForeignKey(to='doc.StateType'), - preserve_default=True, - ), - migrations.AddField( - model_name='document', - name='authors', - field=models.ManyToManyField(to='person.Email', through='doc.DocumentAuthor', blank=True), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.StateType'), ), ] diff --git a/ietf/doc/migrations/0002_auto_20141222_1749.py b/ietf/doc/migrations/0002_auto_20141222_1749.py deleted file mode 100644 index 36dde83d0..000000000 --- a/ietf/doc/migrations/0002_auto_20141222_1749.py +++ /dev/null @@ -1,228 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0001_initial'), - ('group', '0001_initial'), - ('name', '0001_initial'), - ('contenttypes', '0001_initial'), - ('person', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='document', - name='group', - field=models.ForeignKey(blank=True, to='group.Group', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='document', - name='intended_std_level', - field=models.ForeignKey(verbose_name=b'Intended standardization level', blank=True, to='name.IntendedStdLevelName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='document', - name='shepherd', - field=models.ForeignKey(related_name='shepherd_document_set', blank=True, to='person.Email', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='document', - name='states', - field=models.ManyToManyField(to='doc.State', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='document', - name='std_level', - field=models.ForeignKey(verbose_name=b'Standardization level', blank=True, to='name.StdLevelName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='document', - name='stream', - field=models.ForeignKey(blank=True, to='name.StreamName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='document', - name='tags', - field=models.ManyToManyField(to='name.DocTagName', null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='document', - name='type', - field=models.ForeignKey(blank=True, to='name.DocTypeName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='docreminder', - name='event', - field=models.ForeignKey(to='doc.DocEvent'), - preserve_default=True, - ), - migrations.AddField( - model_name='docreminder', - name='type', - field=models.ForeignKey(to='name.DocReminderTypeName'), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistoryauthor', - name='author', - field=models.ForeignKey(to='person.Email'), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistoryauthor', - name='document', - field=models.ForeignKey(to='doc.DocHistory'), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='ad', - field=models.ForeignKey(related_name='ad_dochistory_set', verbose_name=b'area director', blank=True, to='person.Person', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='authors', - field=models.ManyToManyField(to='person.Email', through='doc.DocHistoryAuthor', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='doc', - field=models.ForeignKey(related_name='history_set', to='doc.Document'), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='group', - field=models.ForeignKey(blank=True, to='group.Group', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='intended_std_level', - field=models.ForeignKey(verbose_name=b'Intended standardization level', blank=True, to='name.IntendedStdLevelName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='related', - field=models.ManyToManyField(to='doc.DocAlias', through='doc.RelatedDocHistory', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='shepherd', - field=models.ForeignKey(related_name='shepherd_dochistory_set', blank=True, to='person.Email', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='states', - field=models.ManyToManyField(to='doc.State', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='std_level', - field=models.ForeignKey(verbose_name=b'Standardization level', blank=True, to='name.StdLevelName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='stream', - field=models.ForeignKey(blank=True, to='name.StreamName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='tags', - field=models.ManyToManyField(to='name.DocTagName', null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='dochistory', - name='type', - field=models.ForeignKey(blank=True, to='name.DocTypeName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='docevent', - name='by', - field=models.ForeignKey(to='person.Person'), - preserve_default=True, - ), - migrations.AddField( - model_name='docevent', - name='doc', - field=models.ForeignKey(to='doc.Document'), - preserve_default=True, - ), - migrations.AddField( - model_name='docalias', - name='document', - field=models.ForeignKey(to='doc.Document'), - preserve_default=True, - ), - migrations.AddField( - model_name='deletedevent', - name='by', - field=models.ForeignKey(to='person.Person'), - preserve_default=True, - ), - migrations.AddField( - model_name='deletedevent', - name='content_type', - field=models.ForeignKey(to='contenttypes.ContentType'), - preserve_default=True, - ), - migrations.AddField( - model_name='ballottype', - name='doc_type', - field=models.ForeignKey(blank=True, to='name.DocTypeName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='ballottype', - name='positions', - field=models.ManyToManyField(to='name.BallotPositionName', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='ballotpositiondocevent', - name='ad', - field=models.ForeignKey(to='person.Person'), - preserve_default=True, - ), - migrations.AddField( - model_name='ballotpositiondocevent', - name='ballot', - field=models.ForeignKey(default=None, to='doc.BallotDocEvent', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='ballotpositiondocevent', - name='pos', - field=models.ForeignKey(default=b'norecord', verbose_name=b'position', to='name.BallotPositionName'), - preserve_default=True, - ), - migrations.AddField( - model_name='ballotdocevent', - name='ballot_type', - field=models.ForeignKey(to='doc.BallotType'), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0003_auto_20150326_0728.py b/ietf/doc/migrations/0003_auto_20150326_0728.py deleted file mode 100644 index eaa85ebac..000000000 --- a/ietf/doc/migrations/0003_auto_20150326_0728.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward_materials_state(apps, schema_editor): - StateType = apps.get_model('doc', 'StateType') - State = apps.get_model('doc', 'State') - - StateType.objects.create(slug='reuse_policy',label='Policy') - - single = State.objects.create(type_id='reuse_policy',slug='single',name='Single Meeting') - multiple = State.objects.create(type_id='reuse_policy',slug='multiple',name='Multiple Meetings') - - Document = apps.get_model('doc', 'Document') - for doc in Document.objects.filter(type='slides'): - if doc.group.type.slug=='team': - doc.states.add(multiple) - else: - doc.states.add(single) - - # Expected to be a no-op on current database, but just for completeness - for doc in Document.objects.filter(type='slides'): - doc.states.filter(type='slides',slug='sessonly').update(slug='active') - - State.objects.filter(type_id='slides',slug='sessonly').delete() - - -def reverse_materials_state(apps, schema_editor): - Document = apps.get_model('doc', 'Document') - for doc in Document.objects.filter(type='slides'): - doc.states.filter(type='update_policy').delete() - - StateType = apps.get_model('doc', 'StateType') - StateType.objects.filter(slug='update_policy').delete() - - State = apps.get_model('doc', 'State') - State.objects.create(type='slides',slug='sessonly',name='Session Only') - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0002_auto_20141222_1749'), - ('group', '0003_auto_20150304_0743'), - ] - - operations = [ - migrations.RunPython(forward_materials_state,reverse_materials_state), - ] diff --git a/ietf/doc/migrations/0004_auto_20150403_1235.py b/ietf/doc/migrations/0004_auto_20150403_1235.py deleted file mode 100644 index 5f5da077d..000000000 --- a/ietf/doc/migrations/0004_auto_20150403_1235.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def set_state(doc, state): - already_set = doc.states.filter(type=state.type) - others = [s for s in already_set if s != state] - if others: - doc.states.remove(*others) - if state not in already_set: - doc.states.add(state) - doc.state_cache = None - -def forward_archive_slides(apps,schema_editor): - Document = apps.get_model('doc', 'Document') - State = apps.get_model('doc','State') - archived = State.objects.get(type__slug='slides',slug='archived') - for doc in Document.objects.filter(name__startswith='slides-92-',states__type__slug='slides',states__slug='active'): - set_state(doc,archived) - -def reverse_archive_slides(apps,schema_editor): - Document = apps.get_model('doc', 'Document') - State = apps.get_model('doc','State') - active = State.objects.get(type__slug='slides',slug='active') - for doc in Document.objects.filter(name__startswith='slides-92-',states__type__slug='slides',states__slug='archived'): - set_state(doc,active) - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0003_auto_20150326_0728'), - ] - - operations = [ - migrations.RunPython(forward_archive_slides,reverse_archive_slides), - ] diff --git a/ietf/doc/migrations/0005_auto_20150721_0230.py b/ietf/doc/migrations/0005_auto_20150721_0230.py deleted file mode 100644 index d42c89da6..000000000 --- a/ietf/doc/migrations/0005_auto_20150721_0230.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0004_auto_20150403_1235'), - ] - - operations = [ - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested')]), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0006_auto_20150929_0828.py b/ietf/doc/migrations/0006_auto_20150929_0828.py deleted file mode 100644 index d2e29eb67..000000000 --- a/ietf/doc/migrations/0006_auto_20150929_0828.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0005_auto_20150721_0230'), - ] - - operations = [ - migrations.RemoveField( - model_name='dochistory', - name='related', - ), - migrations.AddField( - model_name='relateddochistory', - name='target_name', - field=models.CharField(default=b'', max_length=255), - preserve_default=True, - ), - migrations.AddField( - model_name='relateddocument', - name='target_name', - field=models.CharField(default=b'', max_length=255), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0007_auto_20150929_0840.py b/ietf/doc/migrations/0007_auto_20150929_0840.py deleted file mode 100644 index 0320d0917..000000000 --- a/ietf/doc/migrations/0007_auto_20150929_0840.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations -import django.db - -def fill_in_docalias_relationship_names(apps, schema_editor): - with django.db.connection.cursor() as cursor: - cursor.execute("update doc_relateddocument join doc_docalias on doc_docalias.id = doc_relateddocument.target_id set doc_relateddocument.target_name = doc_docalias.name;") - cursor.execute("update doc_relateddochistory join doc_docalias on doc_docalias.id = doc_relateddochistory.target_id set doc_relateddochistory.target_name = doc_docalias.name;") - -def noop(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0006_auto_20150929_0828'), - ] - - operations = [ - migrations.RunPython(fill_in_docalias_relationship_names, noop) - ] diff --git a/ietf/doc/migrations/0008_auto_20150930_0242.py b/ietf/doc/migrations/0008_auto_20150930_0242.py deleted file mode 100644 index b3ff2f593..000000000 --- a/ietf/doc/migrations/0008_auto_20150930_0242.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0007_auto_20150929_0840'), - ] - - operations = [ - migrations.RemoveField( - model_name='relateddochistory', - name='target', - ), - migrations.RenameField( - model_name='relateddochistory', - old_name='target_name', - new_name='target', - ), - migrations.RemoveField( - model_name='relateddocument', - name='target', - ), - migrations.RenameField( - model_name='relateddocument', - old_name='target_name', - new_name='target', - ), - ] diff --git a/ietf/doc/migrations/0009_auto_20150930_0248.py b/ietf/doc/migrations/0009_auto_20150930_0248.py deleted file mode 100644 index 879ae7c88..000000000 --- a/ietf/doc/migrations/0009_auto_20150930_0248.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0008_auto_20150930_0242'), - ('ipr', '0006_auto_20150930_0235'), - ] - - operations = [ - migrations.RemoveField( - model_name='docalias', - name='id', - ), - migrations.AlterField( - model_name='docalias', - name='name', - field=models.CharField(max_length=255, serialize=False, primary_key=True), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0010_auto_20150930_0251.py b/ietf/doc/migrations/0010_auto_20150930_0251.py deleted file mode 100644 index f68b9d84f..000000000 --- a/ietf/doc/migrations/0010_auto_20150930_0251.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0009_auto_20150930_0248'), - ] - - operations = [ - migrations.AlterField( - model_name='relateddochistory', - name='target', - field=models.ForeignKey(related_name='reversely_related_document_history_set', to='doc.DocAlias'), - preserve_default=True, - ), - migrations.AlterField( - model_name='relateddocument', - name='target', - field=models.ForeignKey(to='doc.DocAlias'), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0011_add_missing_docaliases.py b/ietf/doc/migrations/0011_add_missing_docaliases.py deleted file mode 100644 index 11ccc1662..000000000 --- a/ietf/doc/migrations/0011_add_missing_docaliases.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations -from django.db.models import F - -def reverse(apps, schema_editor): - pass - -def forward(apps, schema_editor): - Document = apps.get_model('doc','Document') - for doc in Document.objects.filter(type__in=['recording','liaison','liai-att']).exclude(docalias__name=F('name')): - doc.docalias_set.create(name=doc.name) - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0010_auto_20150930_0251'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/doc/migrations/0012_auto_20160207_0537.py b/ietf/doc/migrations/0012_auto_20160207_0537.py deleted file mode 100644 index 897799377..000000000 --- a/ietf/doc/migrations/0012_auto_20160207_0537.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0011_add_missing_docaliases'), - ] - - operations = [ - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested')]), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0013_auto_20151027_1127.py b/ietf/doc/migrations/0013_auto_20151027_1127.py deleted file mode 100644 index 635474467..000000000 --- a/ietf/doc/migrations/0013_auto_20151027_1127.py +++ /dev/null @@ -1,119 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import sys -from tqdm import tqdm - -from django.db import migrations - -def fix_buggy_author_foreignkey(apps, schema_editor): - DocumentAuthor = apps.get_model("doc", "DocumentAuthor") - # apparently, we have a buggy key in the DB, fix it - DocumentAuthor.objects.filter(author="[]").update(author="d3e3e3@gmail.com") - -def save_all_documents_in_history(apps, schema_editor): - State = apps.get_model("doc", "State") - Document = apps.get_model("doc", "Document") - DocHistory = apps.get_model("doc", "DocHistory") - RelatedDocument = apps.get_model("doc", "RelatedDocument") - RelatedDocHistory = apps.get_model("doc", "RelatedDocHistory") - DocumentAuthor = apps.get_model("doc", "DocumentAuthor") - DocHistoryAuthor = apps.get_model("doc", "DocHistoryAuthor") - - sys.stderr.write('\n' - ' Ensuring that all documents have document history entries.\n' - ' This could take as much as an hour to run.\n') - - def canonical_name(self): - name = self.name - state = State.objects.filter(document=self, type_id=self.type_id).first() - if self.type_id == "draft" and state.slug == "rfc": - a = self.docalias_set.filter(name__startswith="rfc") - if a: - name = a[0].name - elif self.type_id == "charter": - try: - return charter_name_for_group(self.chartered_group) - except Exception as e: - print("Exception: %s" % e) - print("Document: %s" % name) - return name - - def charter_name_for_group(group): - if group.type_id == "rg": - top_org = "irtf" - else: - top_org = "ietf" - - return "charter-%s-%s" % (top_org, group.acronym) - - def save_document_in_history(doc): - """Save a snapshot of document and related objects in the database.""" - - - def get_model_fields_as_dict(obj): - return dict((field.name, getattr(obj, field.name)) - for field in obj._meta.fields - if field is not obj._meta.pk) - - # copy fields - fields = get_model_fields_as_dict(doc) - fields["doc"] = doc - fields["name"] = canonical_name(doc) - - objs = DocHistory.objects.filter(**fields) - if objs.exists(): - try: - dochist = objs.get(**fields) - except DocHistory.MultipleObjectsReturned: - dochist_list = list(objs) - for dochist in dochist_list[1:]: - dochist.delete() - dochist = dochist_list[0] - else: - dochist = DocHistory(**fields) - dochist.save() - - # copy many to many - for field in doc._meta.many_to_many: - if field.rel.through and field.rel.through._meta.auto_created: - setattr(dochist, field.name, getattr(doc, field.name).all()) - - # copy remaining tricky many to many - def transfer_fields(obj, HistModel): - mfields = get_model_fields_as_dict(item) - # map doc -> dochist - for k, v in mfields.iteritems(): - if v == doc: - mfields[k] = dochist - HistModel.objects.create(**mfields) - - for item in RelatedDocument.objects.filter(source=doc): - transfer_fields(item, RelatedDocHistory) - - for item in DocumentAuthor.objects.filter(document=doc): - transfer_fields(item, DocHistoryAuthor) - - return dochist - - from django.conf import settings - settings.DEBUG = False # prevent out-of-memory problems - - docs = Document.objects.all() - for d in tqdm(docs): - save_document_in_history(d) - -def noop_backward(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0012_auto_20160207_0537'), - ('group', '0009_auto_20150930_0758'), - ] - - operations = [ - migrations.RunPython(fix_buggy_author_foreignkey, noop_backward), - migrations.RunPython(save_all_documents_in_history, noop_backward) - ] diff --git a/ietf/doc/migrations/0014_auto_20160524_2147.py b/ietf/doc/migrations/0014_auto_20160524_2147.py deleted file mode 100644 index 93d28463a..000000000 --- a/ietf/doc/migrations/0014_auto_20160524_2147.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('message', '__first__'), - ('doc', '0013_auto_20151027_1127'), - ] - - operations = [ - migrations.CreateModel( - name='AddedMessageEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('msgtype', models.CharField(max_length=25)), - ('in_reply_to', models.ForeignKey(related_name='doc_irtomanual', blank=True, to='message.Message', null=True)), - ('message', models.ForeignKey(related_name='doc_manualevents', blank=True, to='message.Message', null=True)), - ], - options={ - }, - bases=('doc.docevent',), - ), - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor'),]), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0015_auto_20161101_2313.py b/ietf/doc/migrations/0015_auto_20161101_2313.py deleted file mode 100644 index 129a24495..000000000 --- a/ietf/doc/migrations/0015_auto_20161101_2313.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0016_fix_duplicate_upload_docevents'), - ('doc', '0014_auto_20160524_2147'), - ] - - operations = [ - migrations.CreateModel( - name='SubmissionDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('rev', models.CharField(max_length=16)), - ('submission', models.ForeignKey(to='submit.Submission')), - ], - options={ - }, - bases=('doc.docevent',), - ), - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'new_submission', b'Uploaded new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor')]), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0016_auto_20160927_0713.py b/ietf/doc/migrations/0016_auto_20160927_0713.py deleted file mode 100644 index ab5a933ab..000000000 --- a/ietf/doc/migrations/0016_auto_20160927_0713.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0015_insert_review_name_data'), - ('review', '0001_initial'), - ('doc', '0015_auto_20161101_2313'), - ] - - operations = [ - migrations.CreateModel( - name='ReviewRequestDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('review_request', models.ForeignKey(to='review.ReviewRequest')), - ('state', models.ForeignKey(blank=True, to='name.ReviewRequestStateName', null=True)), - ], - options={ - }, - bases=('doc.docevent',), - ), - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor'), (b'requested_review', b'Requested review'), (b'assigned_review_request', b'Assigned review request'), (b'closed_review_request', b'Closed review request')]), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0017_fill_review_document_contents.py b/ietf/doc/migrations/0017_fill_review_document_contents.py deleted file mode 100644 index ca5590368..000000000 --- a/ietf/doc/migrations/0017_fill_review_document_contents.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import debug # pyflakes:ignore - -import contextlib -import os -import urllib2 - -from bs4 import BeautifulSoup -from tqdm import tqdm - -from django.db import migrations -from django.conf import settings - -def get_filename(doc): - path = settings.DOCUMENT_PATH_PATTERN.format(doc=doc) - # ! These files right now are created with no version number? - #name = '%s-%s.txt' % (doc.name,doc.rev) - name = '%s.txt' % (doc.name,) - return os.path.join(path,name) - -def forward(apps,schema_editor): - # for each qualifying document - Document = apps.get_model('doc','Document') - - for doc in tqdm(Document.objects.filter(type='review',external_url__contains="www.ietf.org/mail-archive/web"),desc="Pointers into Mhonarc"): - filename = get_filename(doc) - if not os.path.isfile(filename): - with contextlib.closing(urllib2.urlopen(doc.external_url)) as infile: - fullcontents = infile.read().decode('utf-8', 'ignore'); - start = fullcontents.find('') - end = fullcontents.find('') - bodyblock=fullcontents[start+len(''):end] - text = BeautifulSoup(bodyblock,"lxml").get_text('\n\n') \ - .replace('FAQ at <\n\nhttp://wiki.tools','FAQ at ','wiki/GenArtfaq>') - with contextlib.closing(open(filename,'w')) as outfile: - outfile.write(text.encode('utf8')) - - for doc in tqdm(Document.objects.filter(type='review',external_url__contains="mailarchive.ietf.org"),desc="Pointers into Mailarchive"): - filename = get_filename(doc) - if not os.path.isfile(filename): - with contextlib.closing(urllib2.urlopen(doc.external_url)) as infile: - fullcontents = infile.read().decode('utf-8', 'ignore'); - soup = BeautifulSoup(fullcontents,"lxml") - divpre = soup.find('div',{"id":"msg-payload"}).find('pre') - text = divpre.get_text('\n\n') - with contextlib.closing(open(filename,'w')) as outfile: - outfile.write(text.encode('utf8')) - - ## After this migration, we should figure out what to do with these stragglers: - ## In [29]: Document.objects.filter(type='review').exclude(Q(external_url__contains="mailarchive")|Q(external_url__contains="mail-archive")).values_list('external_url',flat=True) - ## Out[29]: [u'https://art.tools.ietf.org/tools/art/genart/index.cgi/t=1909/review_edit?reviewid=2300', u'https://art.tools.ietf.org/tools/art/genart/index.cgi/t=8460/review_edit?reviewid=2735', u'https://www.ietf.org/ibin/c5i?mid=6&rid=49&gid=0&k1=933&k2=55337&tid=1296220835', u'https://www.ietf.org/mailman/private/tsv-dir/2012-February/002007.html', u'', u''] - -def reverse(apps,schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0016_auto_20160927_0713'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/doc/migrations/0018_auto_20161209_0421.py b/ietf/doc/migrations/0018_auto_20161209_0421.py deleted file mode 100644 index c065b222a..000000000 --- a/ietf/doc/migrations/0018_auto_20161209_0421.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0017_fill_review_document_contents'), - ] - - operations = [ - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'new_submission', b'Uploaded new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor'), (b'requested_review', b'Requested review'), (b'assigned_review_request', b'Assigned review request'), (b'closed_review_request', b'Closed review request')]), - preserve_default=True, - ), - ] diff --git a/ietf/doc/migrations/0019_auto_20161207_1036.py b/ietf/doc/migrations/0019_auto_20161207_1036.py deleted file mode 100644 index 29c23d3eb..000000000 --- a/ietf/doc/migrations/0019_auto_20161207_1036.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0018_auto_20161209_0421'), - ] - - operations = [ - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'new_submission', b'Uploaded new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor'), (b'requested_review', b'Requested review'), (b'assigned_review_request', b'Assigned review request'), (b'closed_review_request', b'Closed review request')]), - ), - migrations.AlterField( - model_name='dochistory', - name='tags', - field=models.ManyToManyField(to='name.DocTagName', blank=True), - ), - migrations.AlterField( - model_name='document', - name='tags', - field=models.ManyToManyField(to='name.DocTagName', blank=True), - ), - ] diff --git a/ietf/doc/migrations/0020_auto_20170224_0222.py b/ietf/doc/migrations/0020_auto_20170224_0222.py deleted file mode 100644 index 248e6224c..000000000 --- a/ietf/doc/migrations/0020_auto_20170224_0222.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-02-24 02:22 -from __future__ import unicode_literals - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0019_auto_20161207_1036'), - ] - - operations = [ - migrations.AlterField( - model_name='dochistory', - name='title', - field=models.CharField(max_length=255, validators=[django.core.validators.RegexValidator(message='Please enter a string without control characters.', regex='^[^\x00-\x1f]*$')]), - ), - migrations.AlterField( - model_name='document', - name='title', - field=models.CharField(max_length=255, validators=[django.core.validators.RegexValidator(message='Please enter a string without control characters.', regex='^[^\x00-\x1f]*$')]), - ), - ] diff --git a/ietf/doc/migrations/0021_add_wg_states.py b/ietf/doc/migrations/0021_add_wg_states.py deleted file mode 100644 index 8c9d846ee..000000000 --- a/ietf/doc/migrations/0021_add_wg_states.py +++ /dev/null @@ -1,60 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-04 04:58 -from __future__ import unicode_literals - -from django.db import migrations -from django.utils.text import slugify - -reordered_states = [ - # old, new, slug - (8, 10, 'chair-w'), - (9, 11, 'writeupw'), - (10, 12, 'sub-pub'), -] - -new_states = [ - (8, "Waiting for Implementation", - "In some areas, it can be desirable to wait for multiple interoperable " - "implementations before progressing a draft to be an RFC, and in some " - "WGs this is required. This state should be entered after WG Last Call " - "has completed."), - (9, "Held by WG", "Held by WG, see document history for details.",), -] - -def forwards(apps,schema_editor): - State = apps.get_model('doc', 'State') - StateType = apps.get_model('doc', 'StateType') - wg_type = StateType.objects.get(slug='draft-stream-ietf') - # change order on some existing states to make room for the new ones - for old_order, new_order, slug in reordered_states: - state = State.objects.get(type=wg_type, slug=slug) - state.order=new_order - state.save() - for order, name, desc in new_states: - slug = slugify(name) - State.objects.create(type=wg_type, slug=slug, name=name, used=True, desc=desc, order=order, ) - - -def backwards(apps,schema_editor): - State = apps.get_model('doc', 'State') - StateType = apps.get_model('doc', 'StateType') - wg_type = StateType.objects.get(slug='draft-stream-ietf') - # change order on some existing states to make room for the new ones - for old_order, new_order, slug in reordered_states: - state = State.objects.get(type=wg_type, slug=slug) - state.order=old_order - state.save() - for order, name, desc in new_states: - slug = slugify(name) - State.objects.get(type=wg_type, slug=slug).delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0020_auto_20170224_0222'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/doc/migrations/0022_add_docevent_rev.py b/ietf/doc/migrations/0022_add_docevent_rev.py deleted file mode 100644 index be8010abd..000000000 --- a/ietf/doc/migrations/0022_add_docevent_rev.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-04 08:20 -from __future__ import unicode_literals - -from django.db import models, migrations - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0021_add_wg_states'), - ] - - operations = [ - migrations.RenameField( - model_name='newrevisiondocevent', - old_name='rev', - new_name='revision', - ), - migrations.RenameField( - model_name='submissiondocevent', - old_name='rev', - new_name='revision', - ), - migrations.AddField( - model_name='docevent', - name='rev', - field=models.CharField(blank=True, max_length=16, verbose_name=b'revision'), - ), - ] diff --git a/ietf/doc/migrations/0023_set_docevent_rev_data.py b/ietf/doc/migrations/0023_set_docevent_rev_data.py deleted file mode 100644 index 27acb2241..000000000 --- a/ietf/doc/migrations/0023_set_docevent_rev_data.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-04 08:30 -from __future__ import unicode_literals, print_function - -from tqdm import tqdm - -from django.db import migrations - -import debug # pyflakes:ignore - -from ietf.doc.models import DocHistory - -def ename(event): - return u"%s %s by %s at %s" % (event.doc.name, event.get_type_display().lower(), event.by.name, event.time) - -def get_dochistory(event): - h = DocHistory.objects.filter(time__lte=event.time,doc__name=event.doc.name).order_by('-time', '-pk') - if not h.exists(): - h = DocHistory.objects.filter(time__gte=event.time,doc__name=event.doc.name).order_by('time', 'pk') - return h - -def get_history_rev(e): - h = e.get_dochistory() - rev = None - if h.exists(): - for i in h: - if i.rev: - break - if i and i.rev: - rev = i.rev - return rev - -def forwards(apps,schema_editor): - DocEvent = apps.get_model('doc', 'DocEvent') - DocEvent.get_dochistory = get_dochistory - NewRevisionDocEvent = apps.get_model('doc', 'NewRevisionDocEvent') - SubmissionDocEvent = apps.get_model('doc', 'SubmissionDocEvent') - print("\nProcessing NewRevisionDocEvents:") - for e in tqdm(list(NewRevisionDocEvent.objects.filter(rev=''))): - if e.revision: - e.rev = e.revision - e.save() - print("\nProcessing SubmissionDocEvents:") - for e in tqdm(list(SubmissionDocEvent.objects.filter(rev=''))): - if e.revision: - e.rev = e.revision - e.save() - print("\nProcessing remaining DocEvents:") - for e in tqdm(list(DocEvent.objects.filter(rev=''))): - rev = get_history_rev(e) - if rev: - e.rev = rev - e.save() - -def backwards(apps,schema_editor): - DocEvent = apps.get_model('doc', 'DocEvent') - print("\nProcessing DocEvents:") - for e in tqdm(list(DocEvent.objects.exclude(rev=''))): - e.rev = '' - e.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0022_add_docevent_rev'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/doc/migrations/0024_del_docevent_subclass_revision.py b/ietf/doc/migrations/0024_del_docevent_subclass_revision.py deleted file mode 100644 index 75b6404fc..000000000 --- a/ietf/doc/migrations/0024_del_docevent_subclass_revision.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-04 12:10 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0023_set_docevent_rev_data'), - ] - - operations = [ - migrations.RemoveField( - model_name='newrevisiondocevent', - name='revision', - ), - migrations.RemoveField( - model_name='submissiondocevent', - name='revision', - ), - ] diff --git a/ietf/doc/migrations/0025_auto_20170307_0146.py b/ietf/doc/migrations/0025_auto_20170307_0146.py deleted file mode 100644 index c6222f2ab..000000000 --- a/ietf/doc/migrations/0025_auto_20170307_0146.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.6 on 2017-03-07 01:46 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0024_del_docevent_subclass_revision'), - ] - - operations = [ - migrations.AlterField( - model_name='docevent', - name='rev', - field=models.CharField(blank=True, max_length=16, null=True, verbose_name=b'revision'), - ), - ] diff --git a/ietf/doc/migrations/0026_add_downrefappr_from_wiki.py b/ietf/doc/migrations/0026_add_downrefappr_from_wiki.py deleted file mode 100644 index ff6f03689..000000000 --- a/ietf/doc/migrations/0026_add_downrefappr_from_wiki.py +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright The IETF Trust 2017, All Rights Reserved -# -*- coding: utf-8 -*- - -from __future__ import unicode_literals - -from django.db import migrations - -downref_registry_from_wiki = [ - ['rfc952', 'draft-hollenbeck-rfc4931bis'], - ['rfc952', 'draft-hollenbeck-rfc4932bis'], - ['rfc1094','draft-ietf-nfsv4-nfsdirect'], - ['rfc1321','rfc3967'], - ['rfc1813','draft-ietf-nfsv4-nfsdirect'], - ['rfc1951','draft-ietf-lemonade-compress'], - ['rfc1952','draft-sweet-rfc2911bis'], - ['rfc1977','draft-sweet-rfc2911bis'], - ['rfc2104','rfc3967'], - ['rfc2144','draft-ietf-secsh-newmodes'], - ['rfc2315','draft-eastlake-additional-xmlsec-uris'], - ['rfc2330','draft-ietf-ippm-metrictest'], - ['rfc2412','draft-ietf-cat-kerberos-pk-init'], - ['rfc2648','draft-ietf-simple-xcap-diff'], - ['rfc2683','draft-ietf-qresync-rfc5162bis'], - ['rfc2702','draft-ietf-isis-admin-tags'], - ['rfc2781','draft-ietf-appsawg-xml-mediatypes'], - ['rfc2818','draft-dusseault-caldav'], - ['rfc2898','draft-turner-asymmetrickeyformat-algs'], - ['rfc2966','draft-ietf-isis-admin-tags'], - ['rfc2985','rfc5750'], - ['rfc2986','rfc6487'], - ['rfc3032','draft-ietf-pals-rfc4447bis'], - ['rfc3174','draft-harris-ssh-rsa-kex'], - ['rfc3196','draft-sweet-rfc2911bis'], - ['rfc3217','draft-ietf-smime-cms-rsa-kem'], - ['rfc3272','draft-ietf-mpls-cosfield-def'], - ['rfc3280','rfc3852'], - ['rfc3281','rfc3852'], - ['rfc3394','draft-ietf-smime-cms-rsa-kem'], - ['rfc3447','draft-ietf-cat-kerberos-pk-init'], - ['rfc3469','draft-ietf-mpls-cosfield-def'], - ['rfc3548','draft-ietf-dnsext-dnssec-records'], - ['rfc3564','draft-ietf-mpls-cosfield-def'], - ['rfc3567','draft-ietf-pce-disco-proto-isis'], - ['rfc3610','rfc4309'], - ['rfc3843','rfc5953'], - ['rfc3579','draft-ietf-radext-rfc4590bis'], - ['rfc3618','draft-ietf-mboned-msdp-deploy'], - ['rfc3713','draft-kato-ipsec-ciph-camellia'], - ['rfc3784','draft-ietf-isis-admin-tags'], - ['rfc3985','draft-ietf-mpls-cosfield-def'], - ['rfc4050','draft-eastlake-additional-xmlsec-uris'], - ['rfc4082','draft-ietf-msec-srtp-tesla'], - ['rfc4226','draft-ietf-keyprov-pskc'], - ['rfc4269','draft-eastlake-additional-xmlsec-uris'], - ['rfc4291','draft-hollenbeck-rfc4932bis'], - ['rfc4347','rfc5953'], - ['rfc4357','draft-ietf-pkix-gost-cppk'], - ['rfc4366','rfc5953'], - ['rfc4492','draft-ietf-tls-chacha20-poly1305'], - ['rfc4493','draft-songlee-aes-cmac-96'], - ['rfc4627','draft-ietf-mediactrl-ivr-control-package'], - ['rfc4753','draft-ietf-ipsec-ike-auth-ecdsa'], - ['rfc4949','draft-ietf-oauth-v2'], - ['rfc5036','draft-ietf-pals-rfc4447bis'], - ['rfc5246','rfc5953'], - ['rfc5280','rfc5953'], - ['rfc5322','draft-hollenbeck-rfc4933bis'], - ['rfc5410','draft-arkko-mikey-iana'], - ['rfc5489','draft-ietf-tls-chacha20-poly1305'], - ['rfc5598','draft-ietf-dkim-mailinglists'], - ['rfc5649','draft-turner-asymmetrickeyformat-algs'], - ['rfc5753','draft-turner-cms-symmetrickeypackage-algs'], - ['rfc5781','draft-ietf-sidr-res-certs'], - ['rfc5869','draft-ietf-trill-channel-tunnel'], - ['rfc5890','draft-ietf-dkim-rfc4871bis'], - ['rfc5911','draft-turner-asymmetrickeyformat'], - ['rfc5912','draft-ietf-pkix-authorityclearanceconstraints'], - ['rfc5952','rfc5953'], - ['rfc6043','draft-arkko-mikey-iana'], - ['rfc6090','draft-turner-akf-algs-update'], - ['rfc6151','draft-ietf-netmod-system-mgmt'], - ['rfc6234','draft-schaad-pkix-rfc2875-bis'], - ['rfc6386','draft-ietf-rtcweb-video'], - ['rfc6480','rfc6485'], - ['rfc6480','rfc6489'], - ['rfc6480','rfc6491'], - ['rfc6480','rfc7935'], - ['rfc6707','draft-ietf-cdni-metadata'], - ['rfc6839','draft-ietf-appsawg-xml-mediatypes'], - ['rfc7251','rfc7252'], - ['rfc7358','draft-ietf-pals-rfc4447bis'], - ['rfc7539','draft-ietf-tls-chacha20-poly1305'], - ['rfc7612','draft-sweet-rfc2911bis'], - ['rfc7748','draft-ietf-jose-cfrg-curves'], - ['rfc8032','draft-ietf-jose-cfrg-curves'] ] - - -def addDownrefRelationships(apps,schema_editor): - DocAlias = apps.get_model('doc','DocAlias') - RelatedDocument = apps.get_model('doc','RelatedDocument') - - for [fn2, fn1] in downref_registry_from_wiki: - da1 = DocAlias.objects.get(name=fn1) - da2 = DocAlias.objects.get(name=fn2) - RelatedDocument.objects.create(source=da1.document, - target=da2, relationship_id='downref-approval') - - -def removeDownrefRelationships(apps,schema_editor): - DocAlias = apps.get_model('doc','DocAlias') - RelatedDocument = apps.get_model('doc','RelatedDocument') - - for [fn2, fn1] in downref_registry_from_wiki: - da1 = DocAlias.objects.get(name=fn1) - da2 = DocAlias.objects.get(name=fn2) - RelatedDocument.objects.filter(source=da1.document, - target=da2, relationship_id='downref-approval').delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0019_add_docrelationshipname_downref_approval'), - ('doc', '0025_auto_20170307_0146'), - ] - - operations = [ - migrations.RunPython(addDownrefRelationships,removeDownrefRelationships) - ] diff --git a/ietf/doc/migrations/0027_auto_20170412_0528.py b/ietf/doc/migrations/0027_auto_20170412_0528.py deleted file mode 100644 index 35dbbb191..000000000 --- a/ietf/doc/migrations/0027_auto_20170412_0528.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-04-12 05:28 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0026_add_downrefappr_from_wiki'), - ] - - operations = [ - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(choices=[(b'new_revision', b'Added new revision'), (b'new_submission', b'Uploaded new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor'), (b'requested_review', b'Requested review'), (b'assigned_review_request', b'Assigned review request'), (b'closed_review_request', b'Closed review request'), (b'downref_approved', b'Downref approved')], max_length=50), - ), - ] diff --git a/ietf/doc/migrations/0028_editedauthorsdocevent.py b/ietf/doc/migrations/0028_editedauthorsdocevent.py deleted file mode 100644 index 64f6422e4..000000000 --- a/ietf/doc/migrations/0028_editedauthorsdocevent.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-04 13:15 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0027_auto_20170412_0528'), - ] - - operations = [ - migrations.CreateModel( - name='EditedAuthorsDocEvent', - fields=[ - ('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')), - ('basis', models.CharField(help_text=b'What is the source or reasoning for the changes to the author list', max_length=255)), - ], - bases=('doc.docevent',), - ), - migrations.AlterField( - model_name='docevent', - name='type', - field=models.CharField(choices=[(b'new_revision', b'Added new revision'), (b'new_submission', b'Uploaded new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'edited_authors', b'Edited the documents author list'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor'), (b'requested_review', b'Requested review'), (b'assigned_review_request', b'Assigned review request'), (b'closed_review_request', b'Closed review request'), (b'downref_approved', b'Downref approved')], max_length=50), - ), - ] diff --git a/ietf/doc/migrations/0029_update_rfc_authors.py b/ietf/doc/migrations/0029_update_rfc_authors.py deleted file mode 100644 index 682c9d4e0..000000000 --- a/ietf/doc/migrations/0029_update_rfc_authors.py +++ /dev/null @@ -1,1358 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-04 12:38 -from __future__ import unicode_literals - -import datetime - -from tqdm import tqdm - -from django.db import migrations -from ietf.person.name import name_parts - - -# (rfc #, [emails to add as documentauthors], [person.pks to remove as document authors]) # [names matching those pks] - -changes = [ - -( 869 , [u'bob.hinden@gmail.com'] , [] ), # [] -( 1070 , ['mrose@twg.com', 'hagens@cs.wisc.edu', 'nhall@cs.wisc.edu'] , [] ), # [] -( 1084 , ['jkreynolds@isi.edu'] , [] ), # [] -( 1085 , ['mrose@twg.com'] , [] ), # [] -( 1086 , ['jpo@cs.nott.ac.uk', 'mrose@twg.com'] , [] ), # [] -( 1088 , ['ljm@twg.com'] , [] ), # [] -( 1089 , ['case@utkux1.utk.edu', 'fedor@patton.nyser.net', 'jrd@ptt.lcs.mit.edu', 'schoff@stonewall.nyser.net'] , [] ), # [] -( 1098 , ['case@utkux1.utk.edu', 'fedor@patton.nyser.net', 'jrd@ptt.lcs.mit.edu', 'schoff@nisc.nyser.net'] , [] ), # [] -( 1099 , ['jkrey@isi.edu'] , [] ), # [] -( 1104 , ['hwb@merit.edu'] , [] ), # [] -( 1106 , ['rfox@tandem.com'] , [] ), # [] -( 1107 , ['sollins@xx.lcs.mit.edu'] , [] ), # [] -( 1109 , ['cerf@a.isi.edu'] , [] ), # [] -( 1110 , ['mckenzie@bbn.com'] , [] ), # [] -( 1111 , ['postel@isi.edu'] , [] ), # [] -( 1112 , ['deering@pescadero.stanford.edu'] , [] ), # [] -( 1113 , ['linn@ultra.enet.dec.com'] , [] ), # [] -( 1114 , ['linn@ultra.enet.dec.com', 'kent@bbn.com'] , [] ), # [] -( 1115 , ['linn@ultra.enet.dec.com'] , [] ), # [] -( 1116 , ['dab@cray.com'] , [] ), # [] -( 1118 , ['krol@uxc.cso.uiuc.edu'] , [] ), # [] -( 1120 , ['vcerf@nri.reston.va.us'] , [] ), # [] -( 1121 , ['postel@isi.edu', 'boehm@cs.ucla.edu', 'lk@cs.ucla.edu', 'vcerf@nri.reston.va.us'] , [] ), # [] -( 1122 , ['braden@isi.edu'] , [] ), # [] -( 1123 , ['braden@isi.edu'] , [] ), # [] -( 1126 , ['little@saic.com'] , [] ), # [] -( 1127 , ['braden@isi.edu'] , [] ), # [] -( 1132 , ['ljm@twg.com'] , [] ), # [] -( 1133 , ['jyy@merit.edu', 'hwb@merit.edu'] , [] ), # [] -( 1134 , [u'rdhobby@ucdavis.edu'] , [] ), # [] -( 1135 , ['jkrey@isi.edu'] , [] ), # [] -( 1137 , ['s.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1138 , ['s.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1139 , ['hagens@cs.wisc.edu'] , [3056L, 3458L] ), # [u'Susan Hares', u'Cathy Wittbrodt'] -( 1141 , ['akullberg@bbn.com', 'tmallory@ccv.bbn.com'] , [] ), # [] -( 1145 , ['zweig@cs.uiuc.edu', 'craig@bbn.com'] , [] ), # [] -( 1146 , ['zweig@cs.uiuc.edu', 'craig@bbn.com'] , [] ), # [] -( 1147 , [u'stine@sparta.com'] , [] ), # [] -( 1148 , ['s.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1149 , ['dwaitzman@bbn.com'] , [] ), # [] -( 1150 , ['jkrey@isi.edu', 'gmalkin@proteon.com'] , [] ), # [] -( 1151 , ['craig@bbn.com', 'hinden@bbn.com'] , [] ), # [] -( 1152 , ['craig@bbn.com'] , [] ), # [] -( 1155 , ['mrose@psi.com', 'kzm@hplabs.hp.com'] , [] ), # [] -( 1156 , ['mrose@psi.com', 'kzm@hplabs.hp.com'] , [] ), # [] -( 1157 , ['fedor@patton.nyser.net', 'jrd@ptt.lcs.mit.edu', 'schoff@nisc.nyser.net', 'case@cs.utk.edu'] , [] ), # [] -( 1159 , ['nelson@sun.soe.clarkson.edu'] , [] ), # [] -( 1160 , ['vcerf@nri.reston.va.us'] , [] ), # [] -( 1164 , ['jyy@merit.edu', 'mathis@faraday.ece.cmu.edu', 'dkatz@merit.edu', 'jch@tcgould.tn.cornell.edu'] , [2791L] ), # [u'Phillip G. Gross'] # Manually kept Rekhter -( 1165 , ['jpo@cs.nott.ac.uk', 'jon@cs.ucl.ac.uk'] , [] ), # [] -( 1167 , ['vcerf@nri.reston.va.us'] , [] ), # [] -( 1169 , ['mills@ecf.ncsl.nist.gov', 'vcerf@nri.reston.va.us'] , [] ), # [] -( 1171 , ['ddp@andrew.cmu.edu'] , [] ), # [] -( 1172 , ['rdhobby@ucdavis.edu', 'ddp@andrew.cmu.edu'] , [] ), # [] -( 1173 , [u'jbvb@ftp.com'] , [] ), # [] -( 1174 , ['vcerf@nri.reston.va.us'] , [] ), # [] -( 1176 , ['mrc@tomobiki-cho.cac.washington.edu'] , [] ), # [] -( 1177 , ['jkrey@isi.edu', 'gmalkin@ftp.com', 'april@nic.ddn.mil'] , [] ), # [] -( 1178 , ['libes@cme.nist.gov'] , [] ), # [] -( 1179 , ['ljm@twg.com'] , [] ), # [] -( 1180 , ['claudiak@spider.co.uk', 'teds@spider.co.uk'] , [] ), # [] -( 1181 , ['k13@nikhef.nl'] , [] ), # [] -( 1183 , ['ariel@relay.prime.com', 'pvm@isi.edu', 'craig_everhart@transarc.com', 'louie@sayshell.umd.edu'] , [] ), # [] -( 1185 , ['lixia@parc.xerox.com', 'braden@isi.edu', 'van@csam.lbl.gov'] , [] ), # [] -( 1186 , ['rivest@theory.lcs.mit.edu'] , [] ), # [] -( 1187 , ['mrose@psi.com', 'kzm@hls.com', 'jrd@ptt.lcs.mit.edu'] , [] ), # [] -( 1188 , ['dkatz@merit.edu'] , [] ), # [] -( 1190 , ['topolcic@bbn.com'] , [] ), # [] -( 1191 , ['deering@xerox.com', 'mogul@decwrl.dec.com'] , [] ), # [] -( 1192 , ['kahin@hulaw.harvard.edu'] , [] ), # [] -( 1193 , ['ferrari@ucbvax.berkeley.edu'] , [] ), # [] -( 1194 , ['dpz@dimacs.rutgers.edu'] , [] ), # [] -( 1196 , ['dpz@dimacs.rutgers.edu'] , [] ), # [] -( 1198 , ['rws@expo.lcs.mit.edu'] , [] ), # [] -( 1199 , ['jkrey@isi.edu'] , [] ), # [] -( 1201 , ['donp@novell.com'] , [] ), # [] -( 1202 , ['mrose@psi.com'] , [] ), # [] -( 1203 , ['rice@sumex-aim.stanford.edu'] , [] ), # [] -( 1204 , ['yeh@netix.com', 'dlee@netix.com'] , [] ), # [] -( 1205 , ['paulc@rchland.iinus1.ibm.com'] , [] ), # [] -( 1206 , ['gmalkin@ftp.com', 'april@nic.ddn.mil'] , [] ), # [] -( 1207 , ['jkrey@isi.edu', 'gmalkin@ftp.com', 'april@nic.ddn.mil'] , [] ), # [] -( 1208 , ['ole@csli.stanford.edu', 'lynch@isi.edu'] , [] ), # [] -( 1209 , ['jcl@sabre.bellcore.com', 'dave@sabre.bellcore.com'] , [] ), # [] -( 1211 , ['postel@isi.edu', 'westine@isi.edu'] , [] ), # [] -( 1212 , ['mrose@psi.com', 'kzm@hls.com'] , [] ), # [] -( 1213 , ['mrose@psi.com', 'kzm@hls.com'] , [] ), # [] -( 1214 , ['cel@mbunix.mitre.org'] , [] ), # [] -( 1215 , ['mrose@psi.com'] , [] ), # [] -( 1217 , ['cerf@nri.reston.va.us'] , [] ), # [] -( 1219 , ['tsuchiya@thumper.bellcore.com'] , [] ), # [] -( 1220 , ['fbaker@acc.com'] , [] ), # [] -( 1221 , ['wbe@bbn.com'] , [] ), # [] -( 1222 , ['hwb@sdsc.edu', 'yakov@watson.ibm.com'] , [] ), # [] -( 1224 , ['louiss@ibm.com'] , [] ), # [] -( 1225 , ['mrose@psi.com'] , [] ), # [] -( 1226 , [u'brian@ucsd.edu'] , [] ), # [] -( 1227 , ['mrose@psi.com'] , [] ), # [] -( 1229 , ['kzm@hls.com'] , [] ), # [] -( 1232 , ['kolb@psi.com', 'fbaker@acc.com'] , [] ), # [] -( 1233 , ['kaj@nvuxr.cc.bellcore.com', 'tacox@sabre.bellcore.com'] , [] ), # [] -( 1234 , ['donp@novell.com'] , [] ), # [] -( 1235 , ['ji@cs.columbia.edu', 'maguire@cs.columbia.edu'] , [] ), # [] -( 1236 , ['lmorales@huachuca-emh8.army.mil', 'phasse@huachuca-emh8.army.mil'] , [] ), # [] -( 1237 , [] , [10535L] ), # [u'Yakov Rekhter'] -( 1239 , ['jkrey@isi.edu'] , [] ), # [] -( 1240 , ['chi@osf.org', 'bill@comm.wang.com'] , [] ), # [] -( 1241 , ['woody@cseic.saic.com', 'mills@udel.edu'] , [] ), # [] -( 1242 , ['sob@harvard.harvard.edu'] , [] ), # [] -( 1243 , ['waldbusser@andrew.cmu.edu'] , [] ), # [] -( 1244 , ['jkrey@isi.edu', 'holbrook@cic.net'] , [] ), # [] -( 1247 , ['jmoy@proteon.com'] , [] ), # [] -( 1248 , ['rcoltun@ni.umd.edu', 'fbaker@acc.com'] , [] ), # [] -( 1249 , ['tim@umich.edu', 'mcs@umich.edu', 'bryan@umich.edu'] , [] ), # [] -( 1251 , ['gmalkin@ftp.com'] , [] ), # [] -( 1253 , ['rcoltun@ni.umd.edu', 'fbaker@acc.com'] , [] ), # [] -( 1256 , ['deering@xerox.com'] , [] ), # [] -( 1257 , ['craig@sics.se'] , [] ), # [] -( 1258 , [u'brian@ucsd.edu'] , [] ), # [] -( 1259 , ['mkapor@eff.org'] , [] ), # [] -( 1261 , ['leslie@diis.ddn.mil', 'scottw@diis.ddn.mil'] , [] ), # [] -( 1263 , ['llp@cs.arizona.edu', 'sean@cs.arizona.edu'] , [] ), # [] -( 1264 , ['hinden@bbn.com'] , [] ), # [] -( 1265 , ['yakov@watson.ibm.com'] , [] ), # [] -( 1266 , ['yakov@watson.ibm.com'] , [] ), # [] -( 1273 , ['schwartz@cs.colorado.edu'] , [] ), # [] -( 1274 , ['p.barker@cs.ucl.ac.uk', 's.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1275 , [u's.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1276 , [u's.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1277 , [u's.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1278 , [] , [13329L, 102154L, 3150L] ), # [u'Alan Young', u'Alexey Melnikov', u'Steve Kille'] -( 1279 , [u's.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1282 , [u'brian@ucsd.edu'] , [] ), # [] -( 1284 , [] , [14376L, 2706L, 8669L] ), # [u'John W. Flick', u'Frank Kastenholz', u'Jeff T. Johnson'] -( 1285 , [] , [3776L] ), # [u'Anil Rijsinghani'] -( 1287 , ['rdhobby@ucdavis.edu', 'braden@isi.edu', 'ddc@lcs.mit.edu', 'lyman@bbn.com', 'vcerf@nri.reston.va.us'] , [] ), # [] -( 1290 , ['jmartin@magnus.acs.ohio-state.edu'] , [] ), # [] -( 1293 , [] , [3844L] ), # [u'Andrew G. Malis'] -( 1296 , ['mkl@nisc.sri.com'] , [] ), # [] -( 1298 , ['bwormley@novell.com', 'steveb@novell.com'] , [] ), # [] -( 1299 , ['mkennedy@isi.edu'] , [] ), # [] -( 1300 , ['0004689513@mcimail.com'] , [] ), # [] -( 1301 , ['marzullo@cs.cornell.edu', 'armstrong@wrc.xerox.com', 'freier@apple.com'] , [] ), # [] -( 1303 , ['kzm@hls.com', 'mrose@dbc.mtview.ca.us'] , [] ), # [] -( 1304 , ['kaj@nvuxr.cc.bellcore.com', 'tacox@sabre.bellcore.com'] , [] ), # [] -( 1306 , ['droid@cray.com', 'jsy@cray.com'] , [] ), # [] -( 1307 , ['droid@cray.com', 'jsy@cray.com'] , [] ), # [] -( 1309 , ['jkrey@isi.edu', 'weider@ans.net', 'heker@nisc.jvnc.net'] , [] ), # [] -( 1312 , ['nelson@crynwr.com', 'geoff@east.sun.com'] , [] ), # [] -( 1313 , ['craig@aland.bbn.com'] , [] ), # [] -( 1314 , ['cohen@isi.edu', 'katz@isi.edu'] , [] ), # [] -( 1315 , ['charles@acc.com'] , [] ), # [] -( 1316 , ['rlstewart@eng.xyplex.com'] , [] ), # [] -( 1317 , ['rlstewart@eng.xyplex.com'] , [] ), # [] -( 1318 , ['rlstewart@eng.xyplex.com'] , [] ), # [] -( 1319 , ['burt@rsa.com'] , [] ), # [] -( 1320 , ['rivest@theory.lcs.mit.edu'] , [] ), # [] -( 1321 , ['rivest@theory.lcs.mit.edu'] , [] ), # [] -( 1322 , ['estrin@usc.edu', 'yakov@ibm.com', 'hotz@usc.edu'] , [] ), # [] -( 1325 , ['april@nisc.sri.com', 'gmalkin@xylogics.com'] , [] ), # [] -( 1328 , ['s.kille@cs.ucl.ac.uk'] , [] ), # [] -( 1329 , ['thimmela@sniabg.wa.sni.de'] , [] ), # [] -( 1331 , ['bsimpson@ray.lloyd.com'] , [] ), # [] -( 1334 , ['bill.simpson@um.cc.umich.edu'] , [] ), # [] -( 1335 , ['z.wang@cs.ucl.ac.uk', 'j.crowcroft@cs.ucl.ac.uk'] , [] ), # [] -( 1336 , ['gmalkin@xylogics.com'] , [] ), # [] -( 1337 , ['braden@isi.edu'] , [] ), # [] -( 1338 , ['jyy@merit.edu', 'tli@cisco.com', 'kannan@oar.net'] , [] ), # [] -( 1348 , ['bmanning@rice.edu'] , [] ), # [] -( 1350 , ['sollins@lcs.mit.edu'] , [] ), # [] -( 1354 , [] , [119947L] ), # [u'Margaret Cullen'] -( 1355 , ['april@nisc.sri.com', 'jcurran@nnsc.nsf.net'] , [] ), # [] -( 1357 , [u'cohen@isi.edu'] , [] ), # [] -( 1358 , ['lyman@bbn.com'] , [] ), # [] -( 1359 , [u'martyne@nr-tech.cit.cornell.edu'] , [] ), # [] -( 1361 , ['mills@udel.edu'] , [] ), # [] -( 1362 , ['mallen@novell.com'] , [] ), # [] -( 1363 , ['craig@aland.bbn.com'] , [] ), # [] -( 1364 , ['kannan@oar.net'] , [] ), # [] -( 1365 , ['72550.1634@compuserve.com'] , [] ), # [] -( 1366 , ['epg@merit.edu'] , [] ), # [] -( 1367 , ['topolcic@nri.reston.va.us'] , [] ), # [] -( 1368 , [] , [6699L, 16911L] ), # [u'Dan Romascanu', u'Kathryn de Graaf'] -( 1371 , ['pgross@ans.net'] , [] ), # [] -( 1373 , ['tpt2@isi.edu'] , [] ), # [] -( 1374 , ['jkr@cray.com', 'droid@cray.com'] , [] ), # [] -( 1379 , ['braden@isi.edu'] , [] ), # [] -( 1381 , ['fbaker@acc.com', 'throop@dg-rtp.dg.com'] , [] ), # [] -( 1382 , ['throop@dg-rtp.dg.com'] , [] ), # [] -( 1383 , ['christian.huitema@mirsa.inria.fr'] , [] ), # [] -( 1385 , ['z.wang@cs.ucl.ac.uk'] , [] ), # [] -( 1395 , ['jkrey@isi.edu'] , [] ), # [] -( 1398 , [] , [8669L] ), # [u'Jeff T. Johnson'] -( 1399 , ['elliott@isi.edu'] , [] ), # [] -( 1400 , ['scottw@internic.net'] , [] ), # [] -( 1402 , ['nic@osu.edu'] , [] ), # [] -( 1404 , [] , [15854L] ), # [u'Michael H. Lambert'] -( 1405 , ['claudio.allocchio@elettra.trieste.it'] , [] ), # [] -( 1407 , [] , [108494L, 16503L] ), # [u'Orly Nicklass', u'Dave Fowler'] -( 1412 , ['kannan@sejour.lkg.dec.com'] , [2701L] ), # [u'David A. Borman'] -( 1416 , ['dab@cray.com'] , [] ), # [] -( 1421 , [] , [14856L, 5111L] ), # [u'Jeff Thompson', u'Steve Dusse'] -( 1427 , ['ned@innosoft.com', 'klensin@infoods.unu.edu'] , [] ), # [] -( 1428 , ['gvaudre@cnri.reston.va.us'] , [] ), # [] -( 1430 , ['s.kille@isode.com'] , [] ), # [] -( 1432 , ['jsq@tic.com'] , [] ), # [] -( 1433 , ['jwong@garage.att.com', 'jwg@garage.att.com'] , [] ), # [] -( 1434 , ['kushi@watson.ibm.com', 'rcdixon@ralvmg.vnet.ibm.com'] , [] ), # [] -( 1436 , ['dmj@boombox.micro.umn.edu', 'alberti@boombox.micro.umn.edu', 'mpm@boombox.micro.umn.edu', 'daniel@boombox.micro.umn.edu', 'fxa@boombox.micro.umn.edu', 'lindner@boombox.micro.umn.edu'] , [] ), # [] -( 1437 , ['linimon@lonesome.com', 'nsb@bellcore.com'] , [] ), # [] -( 1438 , ['christian.huitema@mirsa.inria.fr', 'lyman@bbn.com'] , [] ), # [] -( 1439 , ['craig.a.finseth-1@umn.edu'] , [] ), # [] -( 1440 , ['troth@rice.edu'] , [] ), # [] -( 1445 , [] , [2331L, 2689L, 2455L, 2345L] ), # [u'Dr. Jeff D. Case', u'Steven Waldbusser', u'Dr. Marshall T. Rose', u'James R. Davin'] -( 1446 , [] , [2689L, 2331L, 2455L] ), # [u'Steven Waldbusser', u'Dr. Jeff D. Case', u'Dr. Marshall T. Rose'] -( 1447 , [] , [2689L, 2331L, 2455L] ), # [u'Steven Waldbusser', u'Dr. Jeff D. Case', u'Dr. Marshall T. Rose'] -( 1453 , ['chim@relito.medeng.wfu.edu'] , [] ), # [] -( 1454 , ['dixon@rare.nl'] , [] ), # [] -( 1455 , ['dee@ranger.enet.dec.com'] , [102391L] ), # [u'Donald E. Eastlake 3rd'] -( 1457 , ['housley.mclean_csd@xerox.com'] , [] ), # [] -( 1458 , ['rebraudes@tasc.com', 'gszabele@tasc.com'] , [] ), # [] -( 1460 , [] , [9910L] ), # [u'John G. Myers'] -( 1466 , ['epg@merit.edu'] , [] ), # [] -( 1467 , ['topolcic@cnri.reston.va.us'] , [] ), # [] -( 1478 , [] , [2516L] ), # [u'Marianne Lepp'] -( 1481 , ['christian.huitema@mirsa.inria.fr'] , [] ), # [] -( 1482 , ['sjr@merit.edu'] , [] ), # [] # manually added Richardson, script would have deleted Knopper -( 1486 , ['carl@malamud.com', 'mrose@dbc.mtview.ca.us'] , [] ), # [] -( 1488 , [] , [19108L] ), # [u'Mark Wahl'] -( 1489 , ['ache@astral.msk.su'] , [] ), # [] -( 1492 , ['craig.a.finseth-1@umn.edu'] , [] ), # [] -( 1495 , ['mrose@dbc.mtview.ca.us'] , [] ), # [] -( 1497 , ['jkrey@isi.edu'] , [] ), # [] -( 1498 , ['saltzer@mit.edu'] , [] ), # [] -( 1499 , ['elliott@isi.edu'] , [] ), # [] -( 1501 , ['brunsene@email.enmu.edu'] , [] ), # [] -( 1504 , ['oppenheime1@applelink.apple.com'] , [] ), # [] -( 1508 , ['linn@gza.com'] , [4810L] ), # [u'John Lynn'] -( 1516 , [] , [6699L, 16911L] ), # [u'Dan Romascanu', u'Kathryn de Graaf'] -( 1527 , ['cook@path.net'] , [] ), # [] -( 1535 , ['gavron@aces.com'] , [] ), # [] -( 1539 , ['gmalkin@xylogics.com'] , [] ), # [] -( 1541 , ['droms@bucknell.edu'] , [] ), # [] -( 1542 , ['walter.wimer@cmu.edu'] , [] ), # [] -( 1543 , ['postel@isi.edu'] , [] ), # [] -( 1546 , ['milliken@bbn.com', 'tmendez@bbn.com', 'craig@bbn.com'] , [] ), # [] -( 1550 , ['mankin@cmf.nrl.navy.mil', 'sob@harvard.edu'] , [] ), # [] -( 1551 , ['mallen@novell.com'] , [] ), # [] -( 1554 , ['handa@etl.go.jp', 'mohta@cc.titech.ac.jp'] , [] ), # [] -( 1558 , ['tim@umich.edu'] , [] ), # [] -( 1562 , ['mrp@itd.adelaide.edu.au', 'g.michaelson@cc.uq.oz.au'] , [] ), # [] -( 1563 , ['nsb@bellcore.com'] , [] ), # [] -( 1569 , ['mrose@dbc.mtview.ca.us'] , [] ), # [] -( 1572 , [] , [2701L] ), # [u'David A. Borman'] -( 1579 , ['smb@research.att.com'] , [] ), # [] -( 1580 , ['earndoc@earncc.earn.net'] , [] ), # [] -( 1586 , ['osmund.desouza@att.com'] , [] ), # [] -( 1587 , [] , [18113L] ), # [u'Dr. Patrick W. Murphy'] -( 1589 , ['mills@udel.edu'] , [] ), # [] -( 1590 , [u'postel@isi.edu'] , [] ), # [] -( 1591 , [u'postel@isi.edu'] , [] ), # [] -( 1593 , ['cheng@ralvm6.vnet.ibm.com', 'mckenzie@ralvma.vnet.ibm.com'] , [] ), # [] -( 1596 , [] , [16503L] ), # [u'Dave Fowler'] -( 1597 , ['geertjan.degroot@ripe.net', 'daniel.karrenberg@ripe.net', 'yakov@watson.ibm.com', u'3858921@mcimail.com'] , [] ), # [] -( 1599 , ['mkennedy@isi.edu'] , [] ), # [] -( 1601 , ['christian.huitema@sophia.inria.fr'] , [] ), # [] -( 1602 , [] , [] ), # [] # manually preserved [u'Christian Huitema', u'Phillip G. Gross'] -( 1604 , ['tacox@mail.bellcore.com'] , [] ), # [] -( 1606 , ['j.onions@nexor.co.uk'] , [] ), # [] -( 1607 , ['vinton_cerf@mcimail.com'] , [] ), # [] -( 1613 , ['satz@cisco.com', 'forster@cisco.com', 'gglick@cisco.com', 'r.day@jnt.ac.uk'] , [] ), # [] -( 1619 , [] , [100323L, 100324L, 100325L, 100326L, 21686L, 3844L] ), # [u'James Manchester', u'Subrahmanyam Dravida', u'Jon Anderson', u'Bharat Tarachand Doshi', u'Murali Krishnaswamy', u'Andrew G. Malis'] -( 1623 , [] , [8669L] ), # [u'Jeff T. Johnson'] -( 1625 , ['brewster@wais.com', 'francois@wais.com', 'morris@wais.com'] , [] ), # [] -( 1628 , [] , [8390L, 8342L] ), # [u'Roger Draper', u'Michael R. Davison'] -( 1631 , [] , [6837L] ), # [u'Pyda Srisuresh'] -( 1634 , ['mallen@novell.com'] , [] ), # [] -( 1636 , ['ddc@lcs.mit.edu', 'crocker@tis.com'] , [] ), # [] # manually preserved [u'Robert T. Braden'] -( 1639 , ['dave@corecom.com'] , [] ), # [] -( 1640 , ['crocker@tis.com'] , [] ), # [] -( 1643 , ['kasten@ftp.com'] , [] ), # [] -( 1644 , ['braden@isi.edu'] , [] ), # [] -( 1645 , ['allen@mail.cox.smu.edu'] , [] ), # [] -( 1650 , [] , [8669L] ), # [u'Jeff T. Johnson'] -( 1651 , ['stef@nma.com', 'ned@innosoft.com', 'klensin@mci.net', 'mrose@dbc.mtview.ca.us', 'dcrocker@sgi.com'] , [] ), # [] -( 1652 , ['stef@nma.com', 'ned@innosoft.com', 'klensin@mci.net', 'mrose@dbc.mtview.ca.us', 'dcrocker@sgi.com'] , [] ), # [] -( 1664 , ['claudio.allocchio@elettra.trieste.it'] , [] ), # [] -( 1665 , [] , [19405L, 18205L] ), # [u'Bob Clouston', u'Dr. Robert C. Moore'] -( 1666 , ['dck2@mail.bellcore.com', 'kmshih@novell.com', 'zbig@eicon.qc.ca'] , [] ), # [] -( 1667 , ['mpullen@cs.gmu.edu'] , [] ), # [] -( 1676 , ['ghiselli@infn.it', 'salomoni@infn.it', 'vistoli@infn.it'] , [] ), # [] -( 1690 , ['geoff.huston@aarnet.edu.au'] , [] ), # [] -( 1691 , ['wrt1@cornell.edu'] , [] ), # [] -( 1693 , ['connolly@udel.edu', 'amer@udel.edu', 'pconrad@udel.edu'] , [] ), # [] -( 1697 , ['anthony@informix.com'] , [] ), # [] -( 1699 , ['elliott@isi.edu'] , [] ), # [] -( 1700 , ['postel@isi.edu', 'jkrey@isi.edu'] , [] ), # [] -( 1703 , ['mrose@dbc.mtview.ca.us'] , [] ), # [] -( 1705 , ['ficarell@cpdmfg.cig.mot.com', 'racarlson@anl.gov'] , [] ), # [] -( 1706 , ['colella@nist.gov', 'bmanning@isi.edu'] , [] ), # [] -( 1708 , ['drg508@crane-ns.nwscc.sea06.navy.mil'] , [] ), # [] -( 1711 , ['houttuin@rare.nl'] , [] ), # [] -( 1712 , ['mike@cs.curtin.edu.au', 'craig@cs.curtin.edu.au', 'flint@cs.curtin.edu.au', 'pleitner@cs.curtin.edu.au'] , [] ), # [] -( 1713 , ['artur@fct.unl.pt'] , [] ), # [] -( 1714 , ['markk@internic.net', 'scottw@internic.net'] , [] ), # [] -( 1715 , ['christian.huitema@mirsa.inria.fr'] , [] ), # [] -( 1717 , ['brian@lloyd.com', 'dcarr@newbridge.com', 'glenn@lloyd.com', 'sklower@cs.berkeley.edu'] , [] ), # [] -( 1718 , ['gmalkin@xylogics.com'] , [] ), # [] -( 1719 , ['phill_gross@mcimail.com'] , [] ), # [] -( 1744 , ['geoff.huston@aarnet.edu.au'] , [] ), # [] -( 1745 , ['kannan@isi.edu'] , [] ), # [] -( 1748 , ['cire@cisco.com', 'kzm@cisco.com'] , [] ), # [] -( 1754 , ['laubach@com21.com'] , [] ), # [] -( 1755 , ['dan@merlin.dev.cdx.mot.com', 'mankin@isi.edu', 'hoffman@isi.edu', 'fong@fore.com'] , [] ), # [] -( 1756 , ['timo.rinne@hut.fi'] , [] ), # [] -( 1759 , [] , [14452L] ), # [u'Randy Turner'] -( 1760 , [u'nmh@bellcore.com'] , [] ), # [] -( 1761 , ['bob.gilligan@eng.sun.com', 'brent.callaghan@eng.sun.com'] , [] ), # [] -( 1769 , ['mills@udel.edu'] , [] ), # [] -( 1770 , [u'bud@fotlan5.fotlan.army.mil'] , [] ), # [] -( 1773 , [] , [19987L, 104971L] ), # [u'Danny R. McPherson', u'Keyur Patel'] -( 1774 , [] , [104971L, 103708L] ), # [u'Keyur Patel', u'David Meyer'] -( 1775 , ['dcrocker@mordor.stanford.edu'] , [] ), # [] -( 1776 , ['crocker@cybercash.com'] , [] ), # [] -( 1778 , [] , [19108L] ), # [u'Mark Wahl'] -( 1789 , ['cqyang@cs.unt.edu'] , [] ), # [] -( 1790 , ['vcerf@isoc.org'] , [] ), # [] -( 1791 , ['tae@novell.com'] , [] ), # [] -( 1792 , ['tae@novell.com'] , [] ), # [] -( 1797 , [u'iana@isi.edu'] , [] ), # [] -( 1798 , [] , [10554L, 110406L] ), # [u'Roland Hedberg', u'Leif Johansson'] -( 1799 , ['mkennedy@isi.edu'] , [] ), # [] -( 1802 , ['harald.t.alvestrand@uninett.no', 'sylvain.langlois@der.edf.fr', 'kevin.e.jordan@cdc.com', 'romaguera@netconsult.ch'] , [] ), # [] -( 1803 , ['yee@atlas.arc.nasa.gov', 'sri@qsun.att.com'] , [] ), # [] -( 1804 , [u'rajeev%hss@lando.hns.com'] , [] ), # [] -( 1807 , ['cohen@myri.com', 'rlasher@forsythe.stanford.edu'] , [] ), # [] -( 1809 , ['craig@aland.bbn.com'] , [] ), # [] -( 1811 , ['execdir@fnc.gov'] , [] ), # [] -( 1813 , ['peter.staubach@eng.sun.com', 'beepy@netapp.com', 'brent.callaghan@eng.sun.com'] , [] ), # [] -( 1815 , ['mohta@cc.titech.ac.jp'] , [] ), # [] -( 1816 , ['execdir@fnc.gov'] , [] ), # [] -( 1817 , ['yakov@cisco.com'] , [] ), # [] -( 1820 , ['erik.huizer@surfnet.nl'] , [] ), # [] -( 1824 , [u'danisch@ira.uka.de'] , [] ), # [] -( 1825 , [] , [630L] ), # [u'Dr. Stephen T. Kent'] -( 1826 , [] , [630L] ), # [u'Dr. Stephen T. Kent'] -( 1827 , [] , [630L] ), # [u'Dr. Stephen T. Kent'] -( 1830 , ['greg.vaudreuil@octel.com'] , [] ), # [] -( 1831 , [] , [20766L, 14374L] ), # [u'Robert Thurlow', u'Stephen X. Nahm'] -( 1832 , [] , [20436L] ), # [u'Mike Eisler'] -( 1833 , [] , [14374L] ), # [u'Stephen X. Nahm'] -( 1835 , [] , [109223L, 19999L] ), # [u'Leslie Daigle', u'Sima Newell'] -( 1841 , ['dcoli@cisco.com', 'bent@cisco.com', 'krowett@cisco.com', 'agh@cisco.com', 'joelle@cisco.com'] , [] ), # [] -( 1842 , ['yjj@eng.umd.edu', 'hzrfc@usai.asiainfo.com', 'jian@is.rice.edu', 'ding@beijing.asiainfo.com', 'zhang@orion.harvard.edu'] , [] ), # [] -( 1843 , ['lee@csl.stanford.edu'] , [] ), # [] -( 1845 , ['dcrocker@mordor.stanford.edu'] , [] ), # [] -( 1846 , ['francis.dupont@inria.fr'] , [] ), # [] -( 1848 , ['galvin@tis.com', 'murphy@tis.com'] , [] ), # [] -( 1862 , ['schwartz@cs.colorado.edu', u'romkey@apocalypse.org'] , [] ), # [] -( 1864 , ['jgm+@cmu.edu', 'mrose@dbc.mtview.ca.us'] , [] ), # [] -( 1869 , ['dcrocker@mordor.stanford.edu', 'klensin@mci.net'] , [] ), # [] -( 1870 , ['klensin@mci.net'] , [] ), # [] -( 1872 , [] , [16847L] ), # [u'Jacob Palme'] -( 1878 , ['bmanning@isi.edu'] , [] ), # [] -( 1882 , ['hancock@network-1.com'] , [] ), # [] -( 1889 , ['frederic@parc.xerox.com', 'casner@precept.com', 'van@ee.lbl.gov'] , [] ), # [] -( 1895 , ['elevinson@accurate.com'] , [] ), # [] -( 1899 , ['elliott@isi.edu'] , [] ), # [] -( 1916 , ['pjnesser@rocket.com'] , [] ), # [] -( 1917 , ['pjnesser@martigny.ai.mit.edu'] , [] ), # [] -( 1918 , [u'rgm3@is.chrysler.com'] , [] ), # [] -( 1924 , ['kre@munnari.oz.au'] , [] ), # [] -( 1925 , ['rcallon@baynetworks.com'] , [] ), # [] -( 1926 , ['bygg@sunet.se'] , [] ), # [] -( 1927 , ['rogers@isi.edu'] , [] ), # [] -( 1933 , ['erik.nordmark@eng.sun.com'] , [] ), # [] -( 1937 , ['yakov@cisco.com'] , [] ), # [] -( 1938 , [] , [15424L] ), # [u'Christopher Y. Metz'] -( 1955 , ['hinden@ipsilon.com'] , [] ), # [] -( 1956 , ['plzak@nic.ddn.mil', 'engebred@ncr.disa.mil'] , [] ), # [] -( 1957 , ['nelson@crynwr.com'] , [] ), # [] -( 1966 , [u'rchandra@cisco.com'] , [] ), # [] -( 1971 , ['narten@vnet.ibm.com'] , [] ), # [] -( 1984 , [u'fred@cisco.com', 'brian@dxcoms.cern.ch'] , [] ), # [] -( 1986 , ['wwollman@mitre.org', 'wpolites@mitre.org', 'dwoo@mitre.org'] , [] ), # [] -( 1988 , ['johnf@hprnd.rose.hp.com'] , [] ), # [] -( 1992 , ['gnc@ginger.lcs.mit.edu'] , [] ), # [] -( 1993 , ['wsimpson@umich.edu', 'abarbir@gandalf.ca'] , [] ), # [] -( 1997 , [u'tli@skat.usc.edu', u'rchandra@cisco.com'] , [] ), # [] -( 1999 , ['elliott@isi.edu'] , [] ), # [] -( 2014 , ['weinrib@intel.com'] , [] ), # [] -#( 2016 , [] , [7778L, 18294L, 109223L] ), # [u'Peter Deutsch', u'Chris Alpaugh', u'Leslie Daigle'] # The Bunyip stuff confused the script - don't make any changes -( 2029 , [u'don.hoffman@eng.sun.com'] , [] ), # [] # manually perserved [u'Michael F. Speer'] -( 2032 , ['huitema@bellcore.com'] , [] ), # [] -( 2038 , ['don.hoffman@eng.sun.com', 'goyal@precept.com'] , [] ), # [] -( 2041 , ['randy@cs.berkeley.edu', 'gnguyen@cs.berkeley.edu'] , [] ), # [] -( 2048 , ['postel@isi.edu', 'klensin@mci.net'] , [] ), # [] -( 2050 , ['kimh@internic.net'] , [] ), # [] -( 2065 , ['dee@cybercash.com'] , [] ), # [] -( 2068 , ['fielding@ics.uci.edu'] , [] ), # [] -( 2069 , ['hallam@w3.org'] , [] ), # [] -( 2074 , [] , [4585L] ), # [u'Christopher Bucci'] -( 2090 , [] , [102032L, 105824L] ), # [u'Weng-Chin (Winson) Yung', u'G Dion'] -( 2091 , ['gerry@europe.shiva.com'] , [] ), # [] -( 2092 , ['gerry@europe.shiva.com'] , [] ), # [] -( 2093 , ['cfm@columbia.sparta.com'] , [] ), # [] -( 2094 , ['cfm@columbia.sparta.com'] , [] ), # [] -( 2099 , ['elliott@isi.edu'] , [] ), # [] -( 2100 , ['jra@scfn.thpl.lib.fl.us'] , [] ), # [] -( 2114 , ['schiang@cisco.com', 'jolee@cisco.com', 'yasuda@eme068.cow.melco.co.jp'] , [] ), # [] -( 2117 , ['estrin@usc.edu', 'deering@parc.xerox.com', 'charley@catarina.usc.edu'] , [] ), # [] -( 2122 , ['herve.layec@dri.france-telecom.fr'] , [] ), # [] -( 2130 , ['psv@nada.kth.se', 'cecilia@well.com', 'harald.t.alvestrand@uninett.no', 'rja@cisco.com', 'keld@dkuug.dk', 'mrc@cac.washington.edu'] , [] ), # [] -( 2134 , [] , [2324L] ), # [u'Scott O. Bradner'] -( 2135 , [] , [2324L] ), # [u'Scott O. Bradner'] -( 2136 , ['set@thumper.bellcore.com', 'paul@vix.com'] , [] ), # [] -( 2139 , ['cdr@livingston.com'] , [] ), # [] -( 2145 , ['frystyk@w3.org'] , [] ), # [] -( 2146 , ['execdir@fnc.gov'] , [] ), # [] -( 2150 , ['wls@rainfarm.com'] , [] ), # [] -( 2154 , ['brian.wellington@nominum.com'] , [] ), # [] # manually preserved [u'Sandra L. Murphy', u'Madelyn R. Badger'], adding Wellington -( 2166 , ['pjb@datcon.co.uk'] , [] ), # [] -#( 2167 , [] , [5263L] ), # [u'Scott Williamson'] # manually preserved -( 2168 , ['rdaniel@lanl.gov'] , [] ), # [] -#( 2170 , [] , [8673L, 19461L] ), # [u'Jean-Yves Le Boudec', u'Philippe Oechslin'] # manually preserved -( 2186 , ['kc@nlanr.net'] , [] ), # [] -( 2187 , ['kc@nlanr.net'] , [] ), # [] -( 2195 , ['paul@mci.net', 'randy@mci.net', 'klensin@mci.net'] , [] ), # [] -#( 2198 , [] , [20208L, 20209L, 20210L, 20207L] ), # [u'Isidor Kouvelas', u'Dr. Colin Perkins', u'Jean-Chrysostome Bolot', u'Vicky Hardman'] # manually preserved -( 2199 , ['ramos@isi.edu'] , [] ), # [] -( 2205 , ['braden@isi.edu'] , [] ), # [] -( 2208 , ['mo@uu.net'] , [] ), # [] # manually preserved [u'Dr. Allyn Romanow'] -( 2209 , ['braden@isi.edu'] , [] ), # [] -( 2212 , ['guerin@watson.ibm.com', 'craig@bbn.com'] , [] ), # [] -( 2213 , ['arun@cisco.com'] , [] ), # [] -( 2214 , ['jjk@tiac.net', 'arun@cisco.com'] , [] ), # [] -( 2216 , ['jtw@lcs.mit.edu'] , [] ), # [] -( 2223 , ['postel@isi.edu', 'jkrey@isi.edu'] , [] ), # [] -( 2234 , [u'paul@bayleaf.org.uk'] , [] ), # [] -( 2239 , [] , [14376L, 8205L] ), # [u'John W. Flick', u'Andrew H. Smith'] -( 2245 , [] , [103904L] ), # [u'Kurt Zeilenga'] -( 2247 , ['alg@att.com', 'sri@att.com', 'rvh@att.com'] , [] ), # [] -( 2248 , ['s.kille@isode.com'] , [] ), # [] -( 2249 , ['s.kille@isode.com'] , [] ), # [] -( 2259 , ['joann@bell-labs.com'] , [] ), # [] -( 2267 , ['ferguson@cisco.com', 'dts@senie.com'] , [] ), # [] -( 2270 , ['rchandra@cisco.com', 'enkechen@cisco.com', 'jstewart@isi.edu'] , [] ), # [] -( 2280 , ['curtis@ans.net'] , [] ), # [] -( 2284 , ['jrv@merit.edu'] , [] ), # [] -( 2288 , ['rdaniel@acl.lanl.gov'] , [] ), # [] -( 2289 , ['phil@nesser.com'] , [] ), # [] # manually added Nesser and preserved [u'Mike Straw', u'Craig Metz', u'Neil M. Haller'] -( 2291 , ['ejw@ics.uci.edu'] , [] ), # [] -( 2293 , ['s.kille@isode.com'] , [] ), # [] -( 2299 , ['ramos@isi.edu'] , [] ), # [] -( 2300 , ['postel@isi.edu'] , [] ), # [] -( 2301 , ['jrafferty@worldnet.att.net'] , [] ), # [] -( 2309 , ['ddc@lcs.mit.edu', 'minshall@fiberlane.com', 'lixia@cs.ucla.edu', 'shenker@parc.xerox.com', 'craig@bbn.com', 'llp@cs.arizona.edu', 'kkrama@research.att.com', 'jtw@lcs.mit.edu'] , [] ), # [] -( 2319 , [] , [14645L] ), # [u'Dr. Yuri V. Demchenko'] -( 2320 , ['ted_kuo@baynetworks.com'] , [] ), # [] -( 2321 , ['bressen@leftbank.com'] , [] ), # [] -( 2322 , ['remco@sateh.com', 'andre@nl.net', 'koos@cetis.hvu.nl'] , [] ), # [] -( 2323 , ['ramos@isi.edu'] , [] ), # [] -( 2324 , ['masinter@parc.xerox.com'] , [] ), # [] -( 2325 , ['slavitch@loran.com'] , [] ), # [] -( 2326 , ['anup@netscape.com', 'robla@real.com'] , [] ), # [] -( 2327 , [] , [5133L] ), # [u'Charles E. Perkins'] -( 2339 , [] , [] ), # [] # manually preserved [u'Scott O. Bradner'] -( 2341 , ['littlewo@cisco.com', 'valencia@cisco.com'] , [] ), # [] -( 2343 , ['glenn@research.att.com', 'civanlar@research.att.com'] , [] ), # [] -( 2345 , ['gary@mci.net', 'ted@usa.net'] , [] ), # [] -( 2350 , ['erik.guttman@sun.com'] , [] ), # [] -( 2351 , ['arobert@par1.par.sita.int'] , [] ), # [] -( 2352 , ['owain@vaughan.com'] , [] ), # [] -( 2354 , ['o.hodson@cs.ucl.ac.uk'] , [5133L] ), # [u'Charles E. Perkins'] -( 2362 , ['puneet@catarina.usc.edu', 'van@ee.lbl.gov', 'charley@catarina.usc.edu', 'm.handley@cs.ucl.ac.uk', 'lwei@cisco.com'] , [] ), # [] -( 2367 , ['cmetz@inner.net'] , [] ), # [] -( 2371 , ['keith.evans@tandem.com'] , [] ), # [] -( 2372 , ['keith.evans@tandem.com'] , [] ), # [] -( 2376 , ['ejw@ics.uci.edu'] , [ 101013L, 103902L, 19807L] ), # [ u'Chris Lilley', u'Simon St.Laurent', u'Jim Whitehead'] # manually preserved u'Makoto Murata' -( 2381 , ['mborden@baynetworks.com'] , [] ), # [] -( 2391 , ['suresh@ra.lucent.com'] , [] ), # [] -( 2399 , ['ramos@isi.edu'] , [] ), # [] -( 2400 , ['postel@isi.edu', 'jkrey@isi.edu'] , [] ), # [] -( 2408 , ['jeff.turner@raba.com', 'mjs@securify.com'] , [] ), # [] -( 2413 , ['misha.wolf@reuters.com'] , [] ), # [] -( 2415 , ['knichols@baynetworks.com'] , [] ), # [] -( 2417 , ['maria@xedia.com', 'chihschung@aol.com'] , [] ), # [] -( 2429 , ['czhu@ix.netcom.com', 'garys@pictel.com'] , [105873L, 21458L, 19593L] ), # [u'Roni Even', u'George Sullivan', u'Chunrong Zhu'] -( 2438 , ['mo@uu.net'] , [] ), # [] -( 2440 , ['hal@pgp.com', 'rodney@unitran.com'] , [] ), # [] -( 2441 , ['cohen@myri.com'] , [] ), # [] -( 2442 , ['mark.hoy@mainbrace.com'] , [] ), # [] -( 2448 , ['glenn@research.att.com', 'civanlar@research.att.com'] , [] ), # [] -( 2458 , ['schulzrinne@cs.columbia.edu'] , [] ), # [] -( 2459 , ['housley@spyrus.com', u'wpolk@nist.gov'] , [] ), # [] -( 2460 , ['hinden@iprg.nokia.com'] , [] ), # [] -( 2461 , ['narten@raleigh.ibm.com'] , [] ), # [] -( 2462 , ['narten@raleigh.ibm.com'] , [] ), # [] -( 2463 , ['deering@cisco.com'] , [] ), # [] -( 2468 , ['vcerf@mci.net'] , [] ), # [] -( 2473 , ['deering@cisco.com'] , [] ), # [] -( 2475 , ['black_david@emc.com'] , [] ), # [] -( 2476 , [] , [3346L] ), # [u'Mark Crispin'] -( 2478 , [] , [106376L] ), # [u'Larry Zhu'] -( 2483 , ['rdaniel@lanl.gov'] , [] ), # [] -( 2488 , ['lsanchez@ir.bbn.com'] , [] ), # [] -( 2491 , ['harter@zk3.dec.com'] , [] ), # [] -( 2499 , ['ramos@isi.edu'] , [] ), # [] -( 2501 , ['corson@isr.umd.edu'] , [] ), # [] -( 2502 , ['mpullen@gmu.edu'] , [] ), # [] -( 2504 , ['gmalkin@baynetworks.com', 'lorna@colt.net'] , [] ), # [] -( 2506 , ['hardie@equinix.com'] , [] ), # [] -( 2511 , ['dpkemp@missi.ncsc.mil', 'cadams@entrust.com'] , [] ), # [] # manually preserved [u'Michael Myers'] -( 2517 , ['rvh@att.com'] , [] ), # [] -( 2518 , ['srcarter@novell.com', 'ejw@ics.uci.edu', 'yarong@microsoft.com'] , [] ), # [] -( 2526 , ['deering@cisco.com'] , [] ), # [] -( 2528 , ['housley@spyrus.com', u'wpolk@nist.gov'] , [] ), # [] -( 2538 , [] , [104569L] ), # [u'Simon Josefsson'] # manually preserved [u'Olafur Gudmundsson'] -( 2543 , ['schulzrinne@cs.columbia.edu', 'schooler@cs.caltech.edu', 'jdrosen@bell-labs.com'] , [] ), # [] # manually preserved [u'Mark J. Handley'] -( 2549 , ['djw@vineyard.net'] , [] ), # [] -( 2550 , ['mogul@pa.dec.com', 'steveg@pa.dec.com', 'msm@pa.dec.com'] , [] ), # [] -( 2552 , ['mikeb@net-cs.ucd.ie'] , [] ), # [] -( 2553 , ['gilligan@freegate.com'] , [] ), # [] -( 2565 , ['sbutler@boi.hp.com'] , [] ), # [] -( 2569 , ['hastings@cp10.es.xerox.com', 'jkm@underscore.com', 'norm.jacobs@central.sun.com'] , [] ), # [] -( 2570 , ['case@snmp.com'] , [] ), # [] # manually preserved [u'Russ Mundy'] -( 2585 , ['housley@spyrus.com'] , [] ), # [] -( 2594 , ['cwk@verio.net'] , [] ), # [] -( 2599 , [u'delacruz@isi.edu'] , [] ), # [] -( 2604 , ['randy@qualcomm.com'] , [] ), # [] -( 2605 , ['steve.kille@messagingdirect.com'] , [] ), # [] -( 2608 , ['mday@vinca.com', 'cperkins@sun.com'] , [] ), # [] -( 2609 , ['james.kempf@sun.com', 'cperkins@sun.com'] , [] ), # [] -( 2610 , ['erik.guttman@sun.com'] , [] ), # [] -( 2611 , ['paf@swip.net', 'renato@dstc.edu.au'] , [] ), # [] -( 2614 , ['erik.guttman@sun.com'] , [] ), # [] -( 2615 , ['wsimpson@greendragon.com'] , [] ), # [] -( 2616 , ['frystyk@w3.org'] , [] ), # [] -( 2625 , ['wayne@gadzoox.com'] , [] ), # [] -#( 2626 , [] , [22901L] ), # [u'Philip J. Nesser II'] # manually preserve Nesser -( 2630 , ['housley@spyrus.com'] , [] ), # [] -( 2634 , [] , [110910L] ), # [u'Jim Schaad'] -( 2638 , ['lixia@cs.ucla.edu'] , [] ), # [] -( 2650 , ['dmm@cisco.com'] , [] ), # [] -( 2651 , ['michael.mealling@rwhois.net'] , [] ), # [] -( 2652 , ['michael.mealling@rwhois.net'] , [] ), # [] -( 2662 , ['bathricg@agcs.com'] , [] ), # [] -( 2664 , ['awel@cs.wisc.edu'] , [] ), # [] -( 2669 , [u'stjohns@corp.home.net'] , [6606L] ), # [u'Guenter Roeck'] -( 2670 , [u'stjohns@corp.home.net'] , [6606L] ), # [u'Guenter Roeck'] -( 2674 , [u'les_bell@3com.com'] , [] ), # [] -( 2676 , ['dougw@watson.ibm.com', 'guerin@ee.upenn.edu', 'prz@siara.com', 'sanjayk@dnrc.bell-labs.com'] , [] ), # [] -( 2678 , ['vern@ee.lbl.gov', 'mahdavi@psc.edu'] , [] ), # [] -( 2688 , ['bdavie@cisco.com', 'esc@argon.com'] , [] ), # [] -( 2693 , ['ylo@ssh.fi', 'bt0008@sbc.com'] , [] ), # [] -( 2699 , ['ginoza@isi.edu'] , [] ), # [] -( 2702 , ['mo@uu.net', 'jmalcolm@uu.net', 'jmcmanus@uu.net'] , [] ), # [] -( 2704 , ['jf@research.att.com', 'ji@research.att.com'] , [] ), # [] -( 2706 , ['dee3@us.ibm.com'] , [] ), # [] -( 2711 , [] , [2399L] ), # [u'Dave Katz'] -( 2717 , ['iking@microsoft.com'] , [] ), # [] -( 2719 , ['lode.coene@siemens.atea.be', 'long@nortelnetworks.com', 'chsharp@cisco.com', 'hlin@research.telcordia.com', 'miguel.a.garcia@ericsson.com', 'ian.rytina@ericsson.com'] , [] ), # [] -( 2724 , ['swhandel@us.ibm.com'] , [] ), # [] -( 2729 , ['bob.briscoe@bt.com'] , [] ), # [] -( 2733 , ['schulzrinne@cs.columbia.edu'] , [] ), # [] -( 2736 , ['c.perkins@cs.ucl.ac.uk'] , [] ), # [] # manually preserving [u'Mark J. Handley'] -( 2741 , ['dfrancis@cisco.com'] , [] ), # [] -( 2748 , ['jboyle@level3.net', 'rajan@research.att.com', 'asastry@cisco.com', 'ronc@cisco.com', 'david.durham@intel.com'] , [] ), # [] -( 2749 , ['asastry@cisco.com', 'raju@research.att.com', 'ronc@cisco.com'] , [] ), # [] -( 2762 , ['schulzrinne@cs.columbia.edu'] , [] ), # [] -( 2764 , ['alin@shastanets.com', 'amalis@lucent.com'] , [] ), # [] -( 2766 , ['srisuresh@yahoo.com'] , [] ), # [] -( 2768 , ['johns@cisco.com'] , [] ), # [] -( 2769 , ['cengiz@isi.edu', 'dmm@cisco.com'] , [] ), # [] -( 2772 , ['fink@es.net'] , [] ), # [] -( 2773 , ['housley@spyrus.com'] , [] ), # [] -( 2774 , ['frystyk@microsoft.com'] , [] ), # [] -( 2776 , ['dthaler@microsoft.com'] , [] ), # [] # manually preserving [u'Mark J. Handley'] -( 2778 , ['suga@flab.fujitsu.co.jp'] , [] ), # [] -( 2782 , ['arnt@troll.no'] , [] ), # [] -( 2784 , ['tony1@home.net'] , [] ), # [] -( 2788 , ['steve.kille@messagingdirect.com'] , [] ), # [] -( 2789 , ['steve.kille@messagingdirect.com'] , [] ), # [] -( 2792 , ['ji@research.att.com'] , [] ), # [] -( 2794 , ['pcalhoun@eng.sun.com'] , [] ), # [] -( 2799 , ['ginoza@isi.edu'] , [] ), # [] -( 2820 , ['prasanta@netscape.com', 'djbyrne@us.ibm.com', 'stokes@austin.ibm.com'] , [] ), # [] -( 2825 , ['iab@iab.org'] , [] ), # [] -( 2826 , ['iab@iab.org'] , [104212L] ), # [u'Rob Austein'] -( 2827 , ['dts@senie.com'] , [] ), # [] -( 2829 , ['rlmorgan@washington.edu'] , [] ), # [] -( 2830 , ['rlmorgan@washington.edu'] , [] ), # [] -( 2831 , ['paulle@microsoft.com'] , [] ), # [] -( 2832 , ['manojs@netsol.com'] , [] ), # [] -( 2843 , ['prz@siara.com'] , [] ), # [] -( 2844 , ['dro@zurich.ibm.com', 'rha@zurich.ibm.com'] , [] ), # [] -( 2857 , ['angelos@dsl.cis.upenn.edu'] , [] ), # [] -( 2860 , ['roberts@icann.org'] , [] ), # [] -( 2862 , ['civanlar@research.att.com'] , [] ), # [] -( 2871 , ['schulzrinne@cs.columbia.edu'] , [] ), # [] -( 2873 , ['edc@explosive.net'] , [] ), # [] -( 2874 , ['huitema@microsoft.com'] , [] ), # [] -( 2883 , ['podolsky@eecs.berkeley.edu'] , [4496L] ), # [u'Dr. Allyn Romanow'] # manually preserving [u'Sally Floyd'] -( 2887 , [u'mjh@aciri.org', u'floyd@aciri.org', 'luby@digitalfountain.com'] , [] ), # [] -( 2899 , ['ginoza@isi.edu'] , [] ), # [] -( 2904 , ['dspence@interlinknetworks.com'] , [] ), # [] -( 2905 , ['dspence@interlinknetworks.com'] , [] ), # [] -( 2909 , ['dthaler@microsoft.com'] , [] ), # [] # manually preserving [u'Mark J. Handley'] -( 2910 , ['pmoore@peerless.com'] , [] ), # [] -( 2926 , ['rmoats@coreon.net'] , [] ), # [] -( 2929 , ['brunner@engage.com'] , [] ), # [] -( 2941 , ['jaltman@columbia.edu'] , [] ), # [] -( 2943 , ['housley@spyrus.com'] , [] ), # [] -( 2951 , ['housley@spyrus.com'] , [] ), # [] -( 2959 , ['irina@ennovatenetworks.com', 'bill.strahm@intel.com'] , [11218L, 21405L] ), # [u'Stanley Naudus', u'John Du'] -( 2960 , ['chsharp@cisco.com', 'vern@aciri.org', 'rrs@cisco.com', 'mkalla@telcordia.com', 'taylor@nortelnetworks.com'] , [13353L, 20118L] ), # [u'Roger Stewart', u'Michel Kallas'] -( 2968 , ['thommy.eklof@hotsip.com'] , [] ), # [] -( 2969 , [u'thommy.eklof@hotsip.com'] , [] ), # [] -( 2970 , [u'thommy.eklof@hotsip.com'] , [] ), # [] -( 2974 , [u'mjh@aciri.org'] , [9413L] ), # [u'Maryann Perez Maher'] -( 2977 , ['charliep@iprg.nokia.com'] , [] ), # [] -#( 2981 , [] , [2905L] ), # [u'Bob Stewart'] # manually preserving Bob Stewart -#( 2982 , [] , [2905L] ), # [u'Bob Stewart'] # manually preserving Bob Stewart -( 2985 , [u'magnus@rsasecurity.com'] , [] ), # [] -( 2989 , [u'alan.hameed@fnc.fujitsu.com',u'walshp@lucent.com', 'dmitton@nortelnetworks.com', 'rhsu@qualcomm.com', 'charliep@iprg.nokia.com', 'mmunson@mobilnet.gte.com', 'ed_campbell@3com.com', 'sjacobs@gte.com', 'qa4053@email.mot.com', 'sbaba@tari.toshiba.com', 'basavaraj.patil@nokia.com', u'yxu@watercove.com', 'xing.chen@usa.alcatel.com', 'hskoo@sta.samsung.com', 'mbeadles@smartpipes.com', 'smanning@nortelnetworks.com', 's.sivalingham@ericsson.com', 'bklim@lgic.co.kr', 'mlipfo01@sprintspectrum.com', 'ejaques@akamail.com'] , [] ), # [] # manually preserving [u'Pat R. Calhoun', u'Steven M. Glass', u'Tom Hiller', u'Gopal Dommety', u'Glen Zorn', u'Peter J. McCann', u'Hajime Shiino'] -( 2991 , ['chopps@nexthop.com'] , [] ), # [] -( 2992 , ['chopps@nexthop.com'] , [] ), # [] -( 2995 , ['robart@nortelnetworks.com', 'maw1@lucent.com', 'ago@ssf.abk.nec.co.jp', 'wzz@lucent.com', 'yoakum@nortelnetworks.com', 'faynberg@lucent.com'] , [] ), # [] -( 2998 , ['yoramb@microsoft.com', 'braden@isi.edu'] , [] ), # [] -( 2999 , ['ginoza@isi.edu'] , [] ), # [] -( 3006 , ['oran@cisco.com', 'casner@acm.org'] , [] ), # [] -( 3009 , [u'schulzrinne@cs.columbia.edu'] , [] ), # [] -( 3012 , ['pcalhoun@eng.sun.com'] , [] ), # [] -( 3014 , [] , [19238L] ), # [u' Bill Stewart'] manually preserving [u'Bob Stewart'] -( 3023 , [u'simonstl@simonstl.com', 'mmurata@trl.ibm.co.jp'] , [] ), # [] -( 3025 , ['gdommety@cisco.com', 'kleung@cisco.com'] , [] ), # [] -( 3029 , [u'mzolotarev@baltimore.com', u'robert.zuccherato@entrust.com', u'peter.sylvester@edelweb.fr'] , [] ), #[] # manually preserving [u'Dr. Carlisle Adams'] -( 3031 , ['arun@force10networks.com'] , [] ), # [] -( 3032 , ['tappan@cisco.com'] , [] ), # [] -( 3036 , ['rhthomas@cisco.com', 'fredette@photonex.com'] , [] ), # [] -( 3037 , ['rhthomas@cisco.com'] , [] ), # [] -( 3039 , [u'wpolk@nist.gov'] , [] ), # [] -( 3041 , ['richdr@microsoft.com'] , [] ), # [] -( 3050 , ['schulzrinne@cs.columbia.edu', u'jdrosen@dynamicsoft.com'] , [] ), # [] -( 3053 , [u'paolo.fasano@cselt.it'] , [] ), # [] -( 3054 , ['rtbell@cisco.com'] , [] ), # [] -( 3057 , ['mkalla@telcordia.com'] , [20118L] ), # [u'Michel Kallas'] -( 3075 , ['donald.eastlake@motorola.com', 'reagle@w3.org'] , [] ), # [] -( 3082 , ['jason.goldschmidt@sun.com'] , [] ), # [] -( 3084 , ['andrew@allegronetworks.com', 'raj.yavatkar@intel.com'] , [] ), # [] # Manually preserving [u'Francis Reichmeyer', u'Andrew H. Smith'] -( 3091 , ['kennedyh@engin.umich.edu'] , [] ), # [] -( 3092 , ['esr@thyrsus.com', 'donald.eastlake@motorola.com', 'manros@cp10.es.xerox.com'] , [] ), # [] -( 3094 , ['joe.keller@tekelec.com'] , [] ), # [] -( 3095 , ['fukusima@isl.mei.co.jp', 'khiem.le@nokia.com', 'yoshi@spg.yrp.nttdocomo.co.jp', 'anton.martensson@era.ericsson.se', 'haihong.zheng@nokia.com', 'hans.hannu@ericsson.com', 'zhigang.liu@nokia.com', 'tmima@cisco.com', 'krister.svanbro@ericsson.com', 'akihiro@isl.mei.co.jp', 'wiebke@panasonic.de', 'burmeister@panasonic.de', 'micke@cs.arizona.edu', 'hakenberg@panasonic.de', 'lars-erik.jonsson@ericsson.com'] , [] ), # [] -( 3097 , ['braden@isi.edu'] , [] ), # [] -( 3099 , ['ginoza@isi.edu'] , [] ), # [] -( 3102 , ['yidarlo@yahoo.com'] , [] ), # [] -( 3103 , ['taniguti@ccrl.sj.nec.com'] , [] ), # [] -( 3106 , ['donald.eastlake@motorola.com'] , [] ), # [] -( 3107 , ['erosen@cisco.com'] , [] ), # [] -( 3109 , ['braden@isi.edu'] , [] ), # [] -( 3113 , ['raj.sanmugam@ericsson.ca'] , [] ), # [] -( 3118 , ['waa@cs.umd.edu'] , [] ), # [] -( 3125 , ['pope@secstan.com'] , [] ), # [] # manually preserving [u'John Ross', u'Denis Pinkas'] -( 3127 , [u'barney@databus.com', u'stjohns@rainmakertechnologies.com', u'mstevens@ellacoya.com', u'stuartb@uu.net', u'dnelson@enterasys.com', u'basavaraj.patil@nokia.com'] , [] ), # [] # manually preserving [u'David Mitton'] -( 3136 , ['huilanlu@lucent.com'] , [] ), # [] -( 3139 , ['saperia@jdscons.com'] , [] ), # [] -( 3141 , ['gdommety@cisco.com', 'bklim@lge.com', 'mccap@lucent.com', 'rhsu@qualcomm.com', 'yxu@watercove.com', 's.sivalingham@ericsson.com', 'mmunson@gte.net', 'qa4053@email.mot.com', 'sbaba@tari.toshiba.com', 'xing.chen@usa.alcatel.com', 'hskoo@sta.samsung.com', 'ayaki@ddi.co.jp', 'hshiino@lucent.com', 'pcalhoun@eng.sun.com', 'charles.lo@vodafone-us.com', 'serge@awardsolutions.com', 'mlipfo01@sprintspectrum.com', 't-seki@kddi.com', 'ejaques@akamail.com'] , [] ), # [] -( 3146 , ['onoe@sm.sony.co.jp'] , [] ), # [] -( 3159 , ['khchan@nortelnetworks.com', 'mfine@cisco.com', 'scott.hahn@intel.com'] , [] ), # [] # manually preserving [u'Francis Reichmeyer'] -( 3161 , ['robert.zuccherato@entrust.com', 'pcain@bbn.com'] , [] ), # [] -( 3175 , ['flefauch@cisco.com'] , [] ), # [] -( 3177 , ['iab@iab.org'] , [7262L] ), # [u'Dr. Thomas Narten'] -( 3178 , ['hal@vailsys.com'] , [] ), # [] -( 3186 , ['kawano@core.ecl.net', 'murakami@ntt-20.ecl.net'] , [] ), # [] -( 3187 , ['hartmut.walravens@sbb.spk-berlin.de'] , [] ), # [] -( 3189 , [u'cabo@tzi.org', 'akimichi@sfc.wide.ad.jp', 'casner@acm.org'] , [] ), # [] -( 3198 , ['waldbusser@nextbeacon.com', 'jay.perry@netapp.com'] , [] ), # [] -( 3199 , ['ginoza@isi.edu'] , [] ), # [] -( 3203 , [u'yves.tjoens@alcatel.be'] , [] ), # [] -( 3204 , ['mzonoun@nortelnetworks.com', 'audet@nortelnetworks.com', 'jon.peterson@neustar.com', 'mwatson@nortelnetworks.com'] , [] ), # [] -( 3208 , ['agt@cisco.com', 'lorenzo@cisco.com', 'dleshc@tibco.com', 'speakman@cisco.com', 'j.crowcroft@cs.ucl.ac.uk', 'todd@talarian.com', 'rajitha@cisco.com', 'nbhaskar@cisco.com'] , [] ), # [] -( 3210 , ['xxiao@photuris.com', 'alan@routingloop.com'] , [] ), # [] -( 3212 , ['muckai@atoga.com', 'afredette@charter.net', 'jh@song.fi', 'tim-kilty@mediaone.net', 'pdoolan@acm.org', 'liwwu@cisco.com', 'fsb@thefsb.org', 'loa.andersson@utfors.se', 'rcallon@juniper.net', 'andy.malis@vivacenetworks.com'] , [] ), # [] -( 3213 , ['muckai@atoga.com', 'jamoussi@nortelnetworks.com', 'gwright@nortelnetworks.com', u'gash@att.com'] , [] ), # [] -( 3214 , [u'gash@att.com', 'dareks@nortelnetworks.com'] , [] ), # [] # manually preserving [u'Y Lee', u'Dr. Bilel N. Jamoussi'] -( 3217 , ['rhousley@rsasecurity.com'] , [] ), # [] -( 3236 , ['peter.stark@ecs.ericsson.com'] , [] ), # [] -( 3237 , ['john.loughney@nokia.com', 'mshore@cisco.com', 'lyong@ciena.com', 'rrs@cisco.com', 'maureen.stillman@nokia.com', 'qxie1@email.mot.com'] , [] ), # [] -#( 3245 , ['sob@harvard.edu'] , [106911L] ), # [u'John C. Klensin'] # This one is weird - preserving what is there already -( 3246 , ['jcrb@motorola.com', 'shahram_davari@pmc-sierra.com', 'stiliadi@bell-labs.com', 'bill.courtney@trw.com', 'kent.benson@tellabs.com', 'jean-yves.leboudec@epfl.ch'] , [] ), # [] -( 3247 , ['jcrb@motorola.com', 'shahram_davari@pmc-sierra.com', 'angela.chiu@celion.com', 'kent.benson@tellabs.com', 'kk@teraoptic.com', 'crk@research.att.com', 'bill.courtney@trw.com'] , [] ), # [] -( 3248 , ['brian@hursley.ibm.com'] , [] ), # [] -( 3252 , ['kennedyh@engin.umich.edu'] , [] ), # [] -( 3253 , ['tim_ellison@uk.ibm.com', 'ckaler@microsoft.com', 'jamsden@us.ibm.com'] , [] ), # [] -( 3258 , ['ted.hardie@nominum.com'] , [] ), # [] -( 3261 , ['schooler@research.att.com'] , [] ), # [] -( 3267 , ['qxie1@email.mot.com'] , [] ), # [] -( 3270 , ['flefauch@cisco.com', 'jh@song.fi'] , [] ), # [] -( 3272 , ['xipeng@redback.com', 'anwar@lucent.com', 'angela.chiu@celion.com', 'iwidjaja@research.bell-labs.com'] , [] ), # [] -( 3275 , ['reagle@w3.org'] , [] ), # [] -( 3279 , ['rhousley@rsasecurity.com', u'tim.polk@nist.gov'] , [] ), # [] -( 3280 , ['rhousley@rsasecurity.com', u'wpolk@nist.gov'] , [] ), # [] -( 3281 , ['rhousley@rsasecurity.com'] , [] ), # [] -( 3284 , ['jmacd@cs.berkeley.edu', 'dgk@research.att.com'] , [] ), # [] -( 3286 , ['yoakum@nortelnetworks.com'] , [] ), # [] -( 3288 , ['eamon.otuathail@clipcode.com'] , [] ), # [] -( 3291 , ['bkhabs@nc.rr.com'] , [113203L] ), # [u'Cain'] -( 3299 , ['ginoza@isi.edu'] , [] ), # [] -( 3304 , ['mshore@cisco.com', 'philip.mart@marconi.com', 'richard.swale@bt.com', 'sbrim@cisco.com'] , [] ), # [] -( 3306 , ['bkhabs@nc.rr.com'] , [113203L] ), # [u'Cain'] -( 3307 , ['bkhabs@nc.rr.com'] , [113203L] ), # [u'Cain'] -( 3312 , ['wtm@research.att.com'] , [] ), # [] -( 3313 , [] , [2228L] ), # [u'David A. Evans'] -( 3315 , ['charles.perkins@nokia.com', 'michael.carney@sun.com', 'volz@metrocast.net', 'ted.lemon@nominum.com'] , [] ), # [] -( 3317 , ['khchan@nortelnetworks.com', 'ravi.sahita@intel.com', 'scott.hahn@intel.com'] , [] ), # [] -( 3318 , ['khchan@nortelnetworks.com', 'scott.hahn@intel.com'] , [] ), # [] -( 3319 , ['volz@metrocast.net'] , [] ), # [] -( 3320 , ['cabo@tzi.org', 'jan.christoffersson@epl.ericsson.se'] , [] ), # [] -( 3321 , ['kcleung@cs.ttu.edu'] , [] ), # [] -( 3331 , ['bidulock@openss7.org'] , [104129L, 20118L] ), # [u'Tom George', u'Michel Kallas'] -( 3334 , ['carle@fokus.fhg.de', 'zseby@fokus.fhg.de'] , [] ), # [] -( 3338 , ['yjkim@pec.etri.re.kr', 'mkshin@pec.etri.re.kr'] , [] ), # [] -( 3344 , ['charliep@iprg.nokia.com'] , [] ), # [] -( 3346 , ['blaine@uu.net', 'dcooper@gblx.net', 'alan@routingloop.com', 'vijay@umbc.edu', 'awduche@movaz.com', 'wlai@att.com'] , [] ), # [] -( 3351 , ['michael.gasson@korusolutions.com', 'mike.spanner@rnid.org.uk', 'arnoud.van.wijk@eln.ericsson.se', 'guido.gybels@rnid.org.uk'] , [] ), # [] -( 3353 , ['bernard.sales@alcatel.be'] , [] ), # [] -( 3355 , ['tor@redback.com'] , [] ), # [] -( 3356 , ['garyfishman@lucent.com'] , [] ), # [] -( 3369 , ['rhousley@rsasecurity.com'] , [] ), # [] -( 3370 , ['rhousley@rsasecurity.com'] , [] ), # [] -( 3377 , ['rlmorgan@washington.edu'] , [] ), # [] -( 3378 , ['rhousley@rsasecurity.com'] , [] ), # [] -( 3379 , ['rhousley@rsasecurity.com'] , [] ), # [] -( 3385 , ['dafna_sheinwald@il.ibm.com', 'pat_thaler@agilent.com'] , [104719L] ), # [u'Matt Wakeley'] -( 3394 , ['rhousley@rsasecurity.com'] , [] ), # [] -( 3408 , ['khiem.le@nokia.com'] , [] ), # [] -( 3410 , ['case@snmp.com'] , [] ), # [] -( 3421 , ['erik.guttman@sun.com', 'wfj@us.ibm.com', 'bisdik@us.ibm.com', 'hgs@cs.columbia.edu'] , [] ), # [] -( 3423 , ['eitan@xacct.com'] , [] ), # [] -( 3424 , ['iab@iab.org'] , [] ), # [] -( 3433 , ['kenyon.c.norseth@l-3com.com'] , [] ), # [] -( 3437 , ['palter.ietf@zev.net'] , [] ), # [] -( 3440 , ['faye@pedestalnetworks.com'] , [] ), # [] -( 3443 , ['bora@cisco.com'] , [] ), # [] -( 3446 , ['hank@rem.com'] , [] ), # [] -( 3447 , ['jonsson@mathematik.uni-marburg.de'] , [] ), # [] -( 3448 , ['mjh@icir.org', 'floyd@icir.org'] , [] ), # [] -( 3449 , ['gorry@erg.abdn.ac.uk', 'mahesh@erg.abdn.ac.uk'] , [] ), # [] -( 3458 , ['charle@microsoft.com'] , [] ), # [] -( 3469 , ['fiffi@nortelnetworks.com'] , [] ), # [] -( 3474 , ['dpendarakis@tellium.com'] , [] ), # [] -( 3482 , ['mark.foster@neustar.biz'] , [] ), # [] -( 3485 , ['miguel.a.garcia@ericsson.com'] , [] ), # [] -( 3493 , ['gilligan@intransa.com'] , [] ), # [] -( 3495 , ['burcak@juniper.net'] , [] ), # [] -( 3498 , ['jeff@redback.com'] , [] ), # [] -( 3499 , ['ginoza@isi.edu'] , [] ), # [] -( 3507 , ['cerpa@cs.ucla.edu'] , [] ), # [] -( 3509 , ['myeung@procket.com'] , [] ), # [] -( 3510 , ['bob@herriot.com'] , [] ), # [] -( 3514 , ['bellovin@acm.org'] , [] ), # [] -( 3517 , ['lwang0@uky.edu'] , [] ), # [] -( 3519 , ['henrik@levkowetz.com'] , [] ), # [] -( 3520 , ['nhamer@nortelnetworks.com'] , [] ), # [] -( 3521 , ['nhamer@nortelnetworks.com'] , [] ), # [] -( 3525 , ['marcello.pantaleo@eed.ericsson.se', 'tlatla@verizon.net'] , [4105L] ), # [u'Terry M. Anderson'] -( 3526 , ['mika.kojo@helsinki.fi'] , [] ), # [] -( 3527 , ['raj@cisco.com', 'mjs@cisco.com'] , [] ), # [] -( 3542 , ['jinmei@isl.rdc.toshiba.co.jp'] , [] ), # [] -( 3543 , ['mchandra@cisco.com'] , [] ), # [] -( 3547 , ['hh@sparta.com'] , [] ), # [] -( 3549 , ['hormuzd.m.khosravi@intel.com', 'kuznet@ms2.inr.ac.ru', 'ak@suse.de'] , [] ), # [] -( 3551 , ['casner@acm.org'] , [] ), # [] -( 3560 , ['housley@vigilsec.com'] , [] ), # [] -( 3564 , ['wlai@att.com'] , [20236L] ), # [u'William Lai'] -( 3567 , ['rja@extremenetworks.com'] , [] ), # [] -( 3577 , ['rgcole@att.com'] , [] ), # [] -( 3586 , ['mcr@sandelman.ottawa.on.ca'] , [] ), # [] -( 3587 , ['erik.nordmark@sun.com'] , [] ), # [] -( 3591 , ['hklam@lucent.com'] , [] ), # [] -( 3599 , ['ginoza@isi.edu'] , [] ), # [] -( 3603 , ['wtm@research.att.com'] , [] ), # [] -( 3604 , ['atsushi@exa.onlab.ntt.co.jp', 'jonathan.sadler@tellabs.com'] , [] ), # [] -( 3606 , ['faye@pedestalnetworks.com'] , [] ), # [] -( 3611 , ['caceres@watson.ibm.com', 'alan@telchemy.com'] , [] ), # [] -( 3616 , ['steve@lsi.upc.es'] , [] ), # [] -( 3619 , ['my@extremenetworks.com'] , [] ), # [] -( 3623 , ['acee@redback.com'] , [] ), # [] -( 3626 , ['t.clausen@computer.org'] , [] ), # [] -( 3634 , ['john@yas.com'] , [] ), # [] -( 3643 , ['milan.merhar@sun.com', 'travos@nortelnetworks.com', 'donnell@mcdata.com', 'muralir@broadcom.com', 'cmonia@pacbell.net'] , [] ), # [] -( 3645 , ['levone@microsoft.com', 'jwesth@microsoft.com', 'praeritg@microsoft.com'] , [] ), # [] -( 3647 , ['wford@verisign.com', 'chokhani@orionsec.com', 'swu@infoliance.com', 'rsabett@cooley.com'] , [] ), # [] -( 3653 , ['reagle@mit.edu'] , [] ), # [] -( 3654 , ['hormuzd.m.khosravi@intel.com'] , [] ), # [] -( 3655 , ['ogud@ogud.com'] , [] ), # [] -( 3677 , ['iab@iab.org'] , [] ), # [] -( 3689 , ['rja@extremenetworks.com'] , [] ), # [] -( 3690 , ['rja@extremenetworks.com'] , [] ), # [] -( 3693 , ['dmulligan@law.berkeley.edu', 'jmorris@cdt.org', 'jmpolk@cisco.com', 'jon.peterson@neustar.biz'] , [] ), # [] -( 3694 , ['jmorris@cdt.org'] , [] ), # [] -( 3698 , [] , [106744L] ), # [u'Alexandre Pauzies'] -( 3711 , ['karl.norrman@ericsson.com', 'elisabetta.carrara@ericsson.com', 'mcgrew@cisco.com', 'mats.naslund@ericsson.com'] , [] ), # [] -( 3713 , ['shiho@rd.scei.sony.co.jp', 'matsui@iss.isl.melco.co.jp'] , [] ), # [] -( 3716 , ['iab@iab.org'] , [109223L] ), # [u'Leslie Daigle'] -( 3717 , ['james_luciani@mindspring.com', 'braja@tellium.com'] , [] ), # [] -( 3720 , ['efri@xiv.co.il', 'csapuntz@alum.mit.edu', 'cbm@rose.hp.com'] , [] ), # [] -( 3721 , ['marjorie_krueger@hp.com'] , [] ), # [] -( 3724 , ['kempf@docomolabs-usa.com','iab@iab.org'] , [] ), # [] # manually preserving [u'Rob Austein'] -( 3741 , ['reagle@mit.edu'] , [] ), # [] -( 3743 , ['yw@mrko.pe.kr', 'hlqian@cnnic.net.cn', 'huangk@alum.sinica.edu', 'konishi@jp.apan.net'] , [19133L] ), # [u'James Seng'] -( 3745 , ['dlee@yahoo-inc.com', 'richard@elysium.ltd.uk'] , [] ), # [] -( 3751 , ['sob@harvard.edu'] , [] ), # [] -( 3752 , ['abbieb@nortelnetworks.com'] , [] ), # [] # manually preserving [u'Robin Chen'] -( 3760 , ['degustafson@comcast.net'] , [] ), # [] -( 3785 , ['flefauch@cisco.com'] , [] ), # [] -( 3790 , ['phil@nesser.com'] , [] ), # [] -( 3791 , ['cesar.olvera@consulintel.es'] , [] ), # [] -( 3793 , ['phil@nesser.com'] , [] ), # [] -( 3801 , ['gparsons@nortelnetworks.com'] , [] ), # [] -( 3819 , ['gab@sun.com', 'dan.grossman@motorola.com', 'touch@isi.edu', 'jmahdavi@earthlink.net', 'karn@qualcomm.com', 'cabo@tzi.org'] , [] ), # [] -( 3821 , ['roweber@ieee.org'] , [] ), # [] -( 3826 , ['fmaino@andiamo.com'] , [] ), # [] -( 3828 , ['lars-erik.jonsson@ericsson.com', 'lln@csee.ltu.se'] , [] ), # [] -( 3839 , ['roberto.castagno@nokia.com'] , [] ), # [] -( 3843 , ['lars-erik.jonsson@ericsson.com'] , [] ), # [] -( 3854 , ['phoffman@imc.org'] , [] ), # [] -( 3855 , ['phoffman@imc.org'] , [] ), # [] -( 3867 , ['hbbeykirch@web.de'] , [] ), # [] -( 3868 , ['gery.verwimp@siemens.com'] , [] ), # [] -( 3869 , [u'iab@iab.org'] , [] ), # [] # manually preserving [u'Sally Floyd', u'Randall Atkinson'] -( 3875 , ['coar@apache.org'] , [] ), # [] -( 3878 , ['hklam@lucent.com'] , [] ), # [] -( 3883 , ['zinin@psg.com'] , [] ), # [] # manually preserving [u'Sira P. Rao'] -( 3916 , ['prayson.pate@overturenetworks.com'] , [] ), # [] -( 3919 , ['emile.stephan@francetelecom.com'] , [] ), # [] -( 3931 , ['mark@townsley.net'] , [] ), # [] -( 3941 , ['adamson@itd.nrl.navy.mil', 'cabo@tzi.org', 'm.handley@cs.ucl.ac.uk'] , [] ), # [] -( 3944 , ['simao.campos@itu.int'] , [] ), # [] -( 3947 , ['kivinen@safenet-inc.com', 'ari.huttunen@f-secure.com', 'briansw@microsoft.com'] , [] ), # [] -( 3949 , ['dvenable@crt.xerox.com', 'jraff@brooktrout.com'] , [] ), # [] -( 3957 , ['pcalhoun@airespace.com'] , [] ), # [] -( 3979 , ['sob@harvard.edu'] , [] ), # [] -( 3984 , ['stockhammer@nomor.de', 'magnus.westerlund@ericsson.com', 'miska.hannuksela@nokia.com', 'singer@apple.com'] , [] ), # [] -( 3987 , ['duerst@w3.org'] , [] ), # [] -( 3990 , ['bob@airespace.com'] , [] ), # [] -( 3997 , ['debryro@uvsc.edu'] , [] ), # [] -( 4004 , ['pcalhoun@cisco.com', 'tomhiller@lucent.com', 'tony.johansson@bytemobile.com'] , [] ), # [] -( 4006 , ['juha-pekka.koskinen@nokia.com'] , [] ), # [] -( 4007 , ['brian@innovationslab.net', 'bzill@microsoft.com', 'erik.nordmark@sun.com', 'jinmei@isl.rdc.toshiba.co.jp'] , [] ), # [] -( 4018 , ['marjorie_krueger@hp.com', 'todd_sperry@adaptec.com'] , [] ), # [] -( 4023 , ['erosen@cisco.com'] , [] ), # [] -( 4026 , [u'loa@pi.se'] , [] ), # [] -( 4038 , ['itojun@iijlab.net', 'mshin@nist.gov', 'yghong@pec.etri.re.kr'] , [] ), # [] -( 4042 , ['utf9@lingling.panda.com'] , [] ), # [] -( 4046 , ['canetti@watson.ibm.com'] , [] ), # [] -( 4052 , ['iab@iab.org'] , [] ), # [] # manually preserving [u'Leslie Daigle'] -( 4054 , ['chiu@research.att.com'] , [] ), # [] -( 4059 , ['spontius@spyrus.com'] , [] ), # [] -( 4076 , ['vibhaska@cisco.com'] , [] ), # [] -( 4086 , ['donald.eastlake@motorola.com'] , [] ), # [] -( 4088 , ['j.schoenwaelder@iu-bremen.de', 'black_david@emc.com'] , [] ), # [] -( 4101 , [u'iab@iab.org'] , [] ), # [] -( 4105 , ['jeanlouis.leroux@francetelecom.com', 'jpv@cisco.com'] , [] ), # [] -( 4125 , ['wlai@att.com'] , [] ), # [] -( 4129 , ['narsim@nortelnetworks.com', 'ranjith.mukundan@wipro.com'] , [] ), # [] -( 4130 , ['dmoberg@cyclonecommerce.com'] , [] ), # [] -( 4135 , ['jinchoe@samsung.com'] , [] ), # [] -( 4137 , ['npetroni@cs.umd.edu'] , [] ), # [] -( 4139 , [u'gash@att.com'] , [] ), # [] -( 4140 , ['claude.castelluccia@inria.fr'] , [] ), # [] -( 4141 , ['dcrocker@bbiw.net'] , [] ), # [] -( 4149 , ['robert.cole@jhuapl.edu'] , [] ), # [] -( 4162 , ['jhyoon@kisa.or.kr', 'jilee@kisa.or.kr'] , [] ), # [] -( 4165 , ['rdantu@unt.edu', 'bidulock@openss7.org', 'hannsjuergen.schwarzbauer@siemens.com', 'kmorneau@cisco.com'] , [] ), # [] -( 4166 , ['j.javier.pastor@ericsson.com'] , [] ), # [] -( 4169 , [u'mats.naslund@ericsson.com'] , [] ), # [] -( 4171 , ['joes@exmsft.com'] , [] ), # [] -( 4172 , ['wayland@troikanetworks.com', 'mark_edwards@adaptec.com', 'rod.mullendore@mcdata.com', 'travos@nortel.com'] , [] ), # [] -( 4174 , ['kevin.gibbons@mcdata.com', 'joshtseng@yahoo.com'] , [] ), # [] -( 4190 , ['i.brown@cs.ucl.ac.uk'] , [] ), # [] -( 4196 , ['jhyoon@kisa.or.kr', 'sllee@kisa.or.kr', 'jiinii@kisa.or.kr'] , [] ), # [] -( 4207 , ['dimitri.papadimitriou@alcatel.be'] , [] ), # [] -( 4216 , ['jpv@cisco.com'] , [] ), # [] -( 4224 , ['lars-erik.jonsson@ericsson.com'] , [] ), # [] -( 4225 , ['tuomaura@microsoft.com', 'erik.nordmark@sun.com', 'gabriel_montenegro_2000@yahoo.com', 'jari.arkko@ericsson.com'] , [] ), # [] -( 4226 , [u'davidietf@gmail.com', 'dmraihi@verisign.com'] , [] ), # [] # manually preserving [u'Mihir Bellare'] -( 4227 , ['eamon.otuathail@clipcode.com'] , [] ), # [] -( 4241 , ['miyakawa@nttv6.jp'] , [] ), # [] -( 4247 , ['raymond.zhang@bt.infonet.com'] , [] ), # [] -( 4259 , ['gorry@erg.abdn.ac.uk', 'mmontpetit@motorola.com'] , [] ), # [] -( 4268 , ['dperkins@snmpinfo.com'] , [] ), # [] -( 4269 , [u'sjlee@kisa.or.kr', u'jhyoon@kisa.or.kr', u'dhcheon@mmaa.or.kr', u'jilee@kisa.or.kr'] , [] ), # [] # manually preserving [u'Hyangjin Lee'] -( 4298 , [u'rchen@broadcom.com'] , [] ), # [] -( 4326 , ['gorry@erg.abdn.ac.uk'] , [] ), # [] -( 4336 , ['kohler@cs.ucla.edu', 'm.handley@cs.ucl.ac.uk'] , [] ), # [] -( 4340 , ['floyd@icir.org', 'm.handley@cs.ucl.ac.uk'] , [] ), # [] -( 4346 , ['tim@dierks.org'] , [] ), # [] -( 4360 , ['tappan@cisco.com'] , [] ), # [] -( 4362 , ['lars-erik.jonsson@ericsson.com'] , [] ), # [] -( 4377 , ['swallow@cisco.com', 'mmorrow@cisco.com', 'dallan@nortel.com'] , [] ), # [] -( 4382 , ['havander@cisco.com'] , [] ), # [] -( 4391 , [u'jerry.chu@sun.com'] , [] ), # [] -( 4396 , ['matsui.yoshinori@jp.panasonic.com'] , [] ), # [] -( 4403 , ['vijay.nanjundaswamy@oracle.com'] , [] ), # [] -( 4410 , ['mpullen@gmu.edu'] , [] ), # [] -( 4420 , ['jpv@cisco.com'] , [] ), # [] -( 4430 , ['vilhuber@cisco.com', 'ken-ichi.kamada@jp.yokogawa.com'] , [] ), # [] -( 4435 , ['juha-pekka.luoma@nokia.com'] , [] ), # [] -( 4440 , ['falk@isi.edu', 'vern@icir.org'] , [] ), # [] -( 4447 , ['tob@netapp.com', 'giles.heron@tellabs.com', 'erosen@cisco.com', 'nna@level3.net'] , [] ), # [] -( 4448 , ['nna@level3.net', 'lmartini@cisco.com'] , [] ), # [] -( 4460 , ['acaro@bbn.com'] , [] ), # [] -( 4473 , ['juha-pekka.luoma@nokia.com'] , [] ), # [] -( 4489 , ['myungki.shin@gmail.com', 'khj@etri.re.kr'] , [] ), # [] -( 4491 , ['dbs@mts.ru'] , [] ), # [] -( 4493 , ['iwata@cse.nagoya-u.ac.jp', 'songlee@ee.washington.edu'] , [] ), # [] -( 4494 , ['songlee@ee.washington.edu', 'radha@ee.washington.edu'] , [] ), # [] -( 4497 , ['olivier.rousseau@alcatel.fr'] , [] ), # [] -( 4503 , ['mab@cryptico.com', 'mvp@cryptico.com'] , [] ), # [] -( 4504 , ['cs@snom.de', 'steven.lass@verizonbusiness.com'] , [] ), # [] -( 4533 , ['jongchoi@us.ibm.com'] , [] ), # [] -( 4544 , ['tommcs@us.ibm.com', 'marjorie_krueger@hp.com'] , [] ), # [] -( 4553 , ['yaakov_s@rad.com'] , [] ), # [] -( 4560 , ['wkenneth@us.ibm.com'] , [] ), # [] -( 4561 , ['jpv@cisco.com'] , [] ), # [] -( 4563 , ['karl.norrman@ericsson.com', 'vesa.lehtovirta@ericsson.com'] , [] ), # [] -( 4564 , ['yaoth@huawei.com', 'zhouwenhui@chinamobile.com'] , [] ), # [] -( 4585 , ['carsten.burmeister@eu.panasonic.com', 'jose.rey@eu.panasonic.com', 'sato652@oki.com'] , [] ), # [] -( 4586 , ['fukunaga444@oki.com', 'jo@acm.org', 'sato652@oki.com'] , [] ), # [] -( 4588 , ['rolf.hakenberg@eu.panasonic.com', 'davidleon123@yahoo.com', 'jose.rey@eu.panasonic.com', 'miyazaki.akihiro@jp.panasonic.com'] , [] ), # [] -( 4605 , ['fenner@research.att.com'] , [] ), # [] -( 4607 , ['holbrook@arastra.com'] , [] ), # [] -( 4609 , ['dmm@1-4-5.net'] , [] ), # [] -( 4611 , ['dmm@1-4-5.net', 'jmeylor@cisco.com'] , [] ), # [] -( 4615 , ['junhyuk.song@samsung.com'] , [] ), # [] -( 4619 , ['andy.malis@tellabs.com'] , [] ), # [] -( 4629 , ['stewe@stewe.org', 'cabo@tzi.org', 'roni.even@polycom.co.il', 'garysull@microsoft.com'] , [] ), # [] -( 4641 , ['miek@miek.nl'] , [] ), # [] -( 4642 , ['chris.newman@sun.com', 'murch@andrew.cmu.edu'] , [] ), # [] -( 4643 , ['murch@andrew.cmu.edu'] , [] ), # [] -( 4652 , ['lyong@ciena.com'] , [] ), # [] -( 4655 , [u'jpv@cisco.com'] , [] ), # [] -( 4657 , ['jeanlouis.leroux@orange-ft.com'] , [] ), # [] -( 4659 , ['flefauch@cisco.com'] , [] ), # [] -( 4662 , ['adam@estacado.net'] , [] ), # [] -( 4682 , ['jf.mule@cablelabs.com'] , [] ), # [] -( 4683 , ['tim.polk@nist.gov', 'jilee@kisa.or.kr'] , [] ), # [] -( 4689 , ['sporetsky@reefpoint.com'] , [] ), # [] -( 4690 , [u'iab@iab.org'] , [] ), # [] -( 4713 , ['john+ietf@jck.com', 'snw@twnic.net.tw', 'erin@twnic.net.tw', 'mao@cnnic.cn'] , [] ), # [] -( 4715 , ['shida@ntt-at.com', 'ohba.takumi@lab.ntt.co.jp'] , [] ), # [] -( 4717 , ['nna@level3.net', 'matthew.bocci@alcatel.co.uk'] , [] ), # [] -( 4726 , ['jpv@cisco.com'] , [] ), # [] -( 4728 , [u'yihchun@uiuc.edu'] , [] ), # [] -( 4732 , ['iab@ietf.org'] , [] ), # [] -( 4736 , ['jpv@cisco.com'] , [] ), # [] -( 4740 , ['carolina.canales@ericsson.com', 'miguel.an.garcia@nokia.com'] , [] ), # [] -( 4745 , ['jmorris@cdt.org'] , [] ), # [] -( 4760 , ['rchandra@sonoasystems.com', 'yakov@juniper.net', 'tbates@cisco.com'] , [] ), # [] -( 4763 , ['solimanhs@gmail.com'] , [] ), # [] -( 4771 , ['karl.norrman@ericsson.com', 'mats.naslund@ericsson.com'] , [] ), # [] -( 4776 , ['hgs+geopriv@cs.columbia.edu'] , [] ), # [] -( 4777 , ['rieth@us.ibm.com', 'jssteven@us.ibm.com'] , [] ), # [] -( 4779 , ['psavola@funet.fi', 'cpopovic@cisco.com', 'jordi.palet@consulintel.es', 'adahmed@cisco.com'] , [] ), # [] -( 4780 , ['jf.mule@cablelabs.com'] , [] ), # [] -( 4784 , ['fquick@qualcomm.com'] , [] ), # [] # manually preserving [u'Christopher Carroll'] -( 4809 , ['bonattic@ieca.com'] , [] ), # [] -( 4815 , ['lars-erik@lejonsson.com'] , [] ), # [] -( 4817 , ['mark@townsley.net'] , [] ), # [] -( 4824 , ['ip-sfs@mur.at'] , [] ), # [] -( 4829 , ['jpv@cisco.com'] , [] ), # [] -( 4844 , [u'iab@iab.org'] , [] ), # [] -( 4845 , [u'iab@iab.org'] , [] ), # [] -( 4871 , ['eric+dkim@sendmail.org', 'jon@pgp.com', 'fenton@cisco.com'] , [] ), # [] -( 4872 , ['jplang@ieee.org'] , [] ), # [] -( 4874 , ['c.yin.lee@gmail.com'] , [] ), # [] -( 4875 , ['yasukawa.seisho@lab.ntt.co.jp', 'dimitri.papadimitriou@alcatel-lucent.be'] , [] ), # [] -( 4885 , ['hong-yon.lach@motorola.com'] , [] ), # [] -( 4888 , ['chanwah.ng@sg.panasonic.com'] , [] ), # [] -( 4896 , ['adam@estacado.net'] , [] ), # [] -( 4897 , ['hartmans-ietf@mit.edu'] , [] ), # [] -( 4898 , ['jheffner@psc.edu'] , [] ), # [] -( 4925 , ['alain_durand@cable.comcast.com', 'xing@cernet.edu.cn', 'dward@cisco.com'] , [] ), # [] -( 4935 , ['sgai@nuovasystems.com', 'hvivek@cisco.com', 'kzm@cisco.com'] , [] ), # [] -( 4936 , ['sgai@nuovasystems.com', 'hvivek@cisco.com', 'kzm@cisco.com'] , [] ), # [] -( 4965 , ['jf.mule@cablelabs.com'] , [] ), # [] -( 4970 , ['jpv@cisco.com'] , [] ), # [] -( 4971 , ['jpv@cisco.com'] , [] ), # [] -( 4972 , ['paul_mabey@cable.comcast.com', 'jeanlouis.leroux@orange-ftgroup.com', 'jpv@cisco.com'] , [] ), # [] -( 4983 , ['sgai@nuovasystems.com', 'hvivek@cisco.com', 'kzm@cisco.com'] , [] ), # [] -( 4995 , ['lars-erik@lejonsson.com'] , [] ), # [] -( 4996 , ['lars-erik@lejonsson.com'] , [] ), # [] -( 5000 , ['rfc-editor@rfc-editor.org'] , [] ), # [] -( 5006 , ['luc.beloeil@orange-ftgroup.com', 'smadanapalli@gmail.com', 'soohong.park@samsung.com'] , [] ), # [] -( 5022 , ['jvandyke@cantata.com', 'eburger@standardstrack.com', 'woof@pingtel.com'] , [] ), # [] -( 5029 , ['jpv@cisco.com'] , [] ), # [] -( 5036 , ['rhthomas@cisco.com'] , [] ), # [] -( 5037 , ['rhthomas@cisco.com'] , [] ), # [] -( 5038 , ['rhthomas@cisco.com'] , [] ), # [] -( 5055 , [u'wpolk@nist.gov'] , [] ), # [] -( 5060 , ['kessler@cisco.com'] , [] ), # [] -#( 5061 , ['qiaobing.xie@motorola.com'] , [102160L] ), # [u'Qiaobing Xie'] # This is messed up - qiaobing has an address hooked into Dae Kim's Person record -( 5065 , ['bgp-confederations@st04.pst.org'] , [] ), # [] -( 5073 , ['jeanlouis.leroux@orange-ftgroup.com'] , [] ), # [] -( 5075 , ['bob.hinden@nokia.com'] , [] ), # [] -( 5077 , ['pasi.eronen@nokia.com', 'hannes.tschofenig@nsn.com', 'hzhou@cisco.com'] , [] ), # [] -( 5087 , ['yaakov_s@rad.com'] , [] ), # [] -( 5088 , ['jeanlouis.leroux@orange-ftgroup.com', 'jpv@cisco.com'] , [] ), # [] -( 5089 , ['jeanlouis.leroux@orange-ftgroup.com', 'jpv@cisco.com'] , [] ), # [] -( 5090 , ['dscreat@dscreat.com', 'beckw@t-systems.com', 'david@kayote.com', 'dwilli@cisco.com'] , [] ), # [] -( 5098 , [u'satish.kumar@ti.com', 'sumanth@cablelabs.com'] , [] ), # [] -( 5115 , ['p.ohanlon@cs.ucl.ac.uk'] , [] ), # [] -( 5120 , ['naiming@cisco.com', 'nsheth@juniper.net'] , [] ), # [] -( 5121 , ['jinchoe@samsung.com'] , [] ), # [] -( 5126 , ['nick.pope@thales-esecurity.com', 'denis.pinkas@bull.net'] , [] ), # [] -( 5140 , ['rajneesh@cisco.com', 'hsalama@citexsoftware.com', 'jdrosen@cisco.com', 'dhaval@moowee.tv'] , [] ), # [] -( 5143 , ['steve.vogelsang@alcatel-lucent.com', 'lmartini@cisco.com', 'john.shirron@ecitele.com', 'jeremy.brayley@ecitele.com'] , [] ), # [] -( 5150 , ['kireeti@juniper.net', 'adrian@olddog.co.uk', 'jpv@cisco.com'] , [] ), # [] -( 5151 , ['adrian@olddog.co.uk', 'jpv@cisco.com'] , [] ), # [] -( 5152 , ['jpv@cisco.com'] , [] ), # [] -( 5153 , ['lutz.mark@ifam.fraunhofer.de', 'stiemerling@nw.neclab.eu', 'paitken@cisco.com', 'quittek@nw.neclab.eu'] , [] ), # [] -( 5160 , ['mohamed.boucadair@orange-ftgroup.com'] , [] ), # [] -( 5166 , ['floyd@icir.org'] , [] ), # [] -( 5175 , ['brian@innovationslab.net', 'bob.hinden@nokia.com'] , [] ), # [] -( 5180 , ['diego@fastsoft.com', 'ahamza@cisco.com', 'gunter@cisco.com'] , [] ), # [] -( 5181 , ['sekim@kt.com', 'yhhan@kut.ac.kr', 'domagoj.premec@siemens.com'] , [] ), # [] -( 5184 , ['mitsuya@sfc.wide.ad.jp', 'gogo@tera.ics.keio.ac.jp', 'shibrie@tera.ics.keio.ac.jp', 'koki@tera.ics.keio.ac.jp'] , [] ), # [] -( 5186 , ['jim@wovensystems.com'] , [] ), # [] -( 5188 , ['qiaobing.xie@gmail.com'] , [107278L] ), # [u'Dae Young Kim'] -( 5189 , ['tom.taylor@rogers.com', 'quittek@nw.neclab.eu'] , [] ), # [] -( 5192 , ['a.yegin@partner.samsung.com', 'syam@samsung.com', 'surajk@techmahindra.com'] , [] ), # [] -( 5193 , ['rafa@um.es'] , [] ), # [] -( 5195 , ['yakov@juniper.net', 'dwfedyk@nortel.com'] , [] ), # [] -( 5202 , ['pekka.nikander@nomadiclab.com', 'rgm@icsalabs.com'] , [] ), # [] -( 5203 , ['teemu.koponen@iki.fi', 'lars.eggert@nokia.com'] , [] ), # [] -( 5206 , ['pekka.nikander@nomadiclab.com', 'christian.vogt@ericsson.com', 'jari.arkko@ericsson.com'] , [] ), # [] -( 5207 , ['lars.eggert@nokia.com', 'quittek@nw.neclab.eu'] , [] ), # [] -( 5209 , ['hormuzd.m.khosravi@intel.com', 'kaushik@cisco.com', 'joseph.tardo@nevisnetworks.com', 'mmani@avaya.com'] , [] ), # [] -( 5212 , ['jeanlouis.leroux@orange-ftgroup.com'] , [] ), # [] -( 5214 , ['tgleeson@cisco.com', 'dthaler@microsoft.com'] , [] ), # [] -( 5216 , ['dansimon@microsoft.com'] , [] ), # [] -( 5226 , ['harald@alvestrand.no'] , [] ), # [] -( 5236 , ['rick_whitner@agilent.com', 'abhijit_bare@agilent.com', 'tarun.banka@colostate.edu', 'nischal.piratla@telekom.de'] , [] ), # [] -( 5241 , ['sob@harvard.edu', 'falk@bbn.com'] , [] ), # [] -( 5242 , ['harald@alvestrand.no', 'john+ietf@jck.com'] , [] ), # [] -( 5246 , ['ekr@rtfm.com'] , [] ), # [] -( 5247 , ['dansimon@microsoft.com'] , [] ), # [] -( 5250 , ['rcoltun@movaz.com'] , [] ), # [] # manually preserving [u'Alex D. Zinin'] -( 5251 , ['dimitri.papadimitriou@alcatel-lucent.be'] , [] ), # [] -( 5254 , ['nabil.n.bitar@verizon.com'] , [] ), # [] -( 5256 , ['murch@andrew.cmu.edu'] , [] ), # [] -( 5269 , ['rkoodli@starentnetworks.com'] , [] ), # [] -( 5280 , ['sharon.boeyen@entrust.com', 'stefans@microsoft.com', u'wpolk@nist.gov', 'housley@vigilsec.com', 'stephen.farrell@cs.tcd.ie'] , [] ), # [] -( 5283 , ['jeanlouis.leroux@orange-ftgroup.com', 'ina@juniper.net'] , [] ), # [] -( 5285 , ['hd@qualcomm.com'] , [] ), # [] -( 5286 , ['alia.atlas@bt.com'] , [] ), # [] manually preserving [u'Alex D. Zinin'] -( 5298 , ['jpv@cisco.com'] , [] ), # [] -( 5303 , ['d3e3e3@gmail.com'] , [] ), # [] -( 5304 , ['rja@extremenetworks.com'] , [] ), # [] -( 5308 , ['chopps@cisco.com'] , [] ), # [] -( 5309 , [u'alex.zinin@alcatel-lucent.com'] , [] ), # [] -( 5310 , ['rja@extremenetworks.com', 'tony.li@tony.li', 'mfanto@aegisdatasecurity.com', 'vishwas@ipinfusion.com', 'riw@cisco.com'] , [] ), # [] -( 5316 , ['mach@huawei.com', 'duanxiaodong@chinamobile.com'] , [] ), # [] -( 5330 , ['jpv@cisco.com', 'matthew.meyer@bt.com'] , [] ), # [] -( 5333 , ['bernie@ietf.hoeneisen.ch'] , [] ), # [] -( 5339 , ['jeanlouis.leroux@orange-ftgroup.com'] , [] ), # [] -( 5344 , ['sriram.parameswar@microsoft.com', 'aoki@aol.net'] , [] ), # [] -( 5348 , ['m.handley@cs.ucl.ac.uk'] , [] ), # [] -( 5363 , ['adam.roach@tekelec.com'] , [] ), # [] -( 5364 , ['miguel.a.garcia@ericsson.com'] , [] ), # [] -( 5367 , ['adam.roach@tekelec.com'] , [] ), # [] -( 5372 , ['itakura@sm.sony.co.jp', 'satosi-f@sm.sony.co.jp'] , [] ), # [] -( 5375 , ['cpopovic@cisco.com'] , [] ), # [] # manually preserving [u'Olaf Bonness'] -( 5381 , ['tomoyuki.iijima@alaxala.com'] , [] ), # [] -( 5384 , ['aboers@cisco.com'] , [] ), # [] -( 5387 , ['touch@isi.edu'] , [] ), # [] -( 5392 , ['mach@huawei.com', 'duanxiaodong@chinamobile.com'] , [] ), # [] -( 5401 , ['macker@itd.nrl.navy.mil', 'm.handley@cs.ucl.ac.uk'] , [] ), # [] -( 5412 , ['ncamwing@cisco.com', 'scott@hyperthought.com', 'gwhiz@gwhiz.com', 'shares@ndzh.com', 'bob.ohara@computer.org', 'rsuri@cisco.com'] , [] ), # [] -( 5413 , ['dharkins@arubanetworks.com', 'subbu@arubanetworks.com'] , [] ), # [] -( 5414 , ['sugiura.mikihito@jp.panasonic.com', 'saravanan.govindan@sg.panasonic.com', 'hong.cheng@sg.panasonic.com'] , [] ), # [] -( 5420 , ['arthi@juniper.net', 'jpv@cisco.com'] , [] ), # [] -( 5425 , ['miaofy@huawei.com', 'myz@huawei.com'] , [] ), # [] -( 5428 , ['enechamkin@broadcom.com', 'deketelaere@tcomlabs.com'] , [] ), # [] -( 5433 , ['clancy@ltsnet.net'] , [] ), # [] -( 5440 , [] , [107328L, 106177L, 104198L, 107025L, 105715L, 106742L, 105146L] ), # [u'Andrew Dolganow', u'Yuichi Ikejiri', u'Adrian Farrel', u'Kenji Kumaki', u'Eiji Oki', u'Alia Atlas', u'Arthi Ayyangar'] -( 5441 , ['jeanlouis.leroux@orange-ftgroup.com', 'jpv@cisco.com'] , [] ), # [] -( 5443 , ['alia.atlas@bt.com', 'markus.jork@genband.com'] , [] ), # [] -( 5450 , ['hd@qualcomm.com'] , [] ), # [] -( 5452 , [u'bert.hubert@netherlabs.nl'] , [] ), # [] -( 5458 , ['h.cruickshank@surrey.ac.uk', 'sunil.iyengar@logica.com'] , [] ), # [] -( 5462 , ['rajiva@cisco.com'] , [] ), # [] -( 5468 , ['jpv@cisco.com'] , [] ), # [] -( 5475 , ['maurizio.molina@dante.org.uk', 'duffield@research.att.com', 'fredi@entel.upc.es', 'saverio.niccolini@netlab.nec.de'] , [] ), # [] -( 5476 , ['andrjohn@cisco.com', 'quittek@nw.neclab.eu'] , [] ), # [] -( 5480 , ['wpolk@nist.gov'] , [] ), # [] -( 5486 , ['dmm@1-4-5.net'] , [] ), # [] -( 5489 , ['ibrahim.hajjeh@ineovation.fr'] , [] ), # [] -( 5496 , ['aboers@cisco.com'] , [] ), # [] -( 5504 , ['yone@jprs.co.jp'] , [] ), # [] -( 5507 , [u'iab@iab.org'] , [] ), # [] -( 5513 , ['adrian@olddog.co.uk'] , [] ), # [] -( 5514 , ['evyncke@cisco.com'] , [] ), # [] -( 5519 , ['julian.chesterfield@cl.cam.ac.uk'] , [] ), # [] -( 5520 , ['jpv@cisco.com'] , [] ), # [] -( 5526 , ['richard.stastny@gmail.com', 'ppfautz@att.com'] , [] ), # [] -( 5536 , ['dan@dankohn.com', 'murch@andrew.cmu.edu'] , [] ), # [] -( 5540 , ['rfc-editor@rfc-editor.org'] , [] ), # [] -( 5541 , ['jeanlouis.leroux@orange-ftgroup.com', 'jpv@cisco.com'] , [] ), # [] -( 5543 , ['yakov@juniper.net'] , [] ), # [] -( 5553 , ['rbradfor@cisco.com', 'jpv@cisco.com'] , [] ), # [] -( 5557 , ['jeanlouis.leroux@orange-ftgroup.com'] , [] ), # [] -( 5561 , ['bobthomas@alum.mit.edu', 'jeanlouis.leroux@orange-ftgroup.com'] , [] ), # [] -( 5562 , ['akuzma@northwestern.edu', 'kkrama@research.att.com', 'a-mondal@northwestern.edu'] , [] ), # [] -( 5563 , ['gdommety@cisco.com', 'kchowdhury@starentnetworks.com', 'pyegani@juniper.net'] , [] ), # [] -( 5570 , ['rja@extremenetworks.com'] , [] ), # [] -( 5571 , ['laurent.toutain@telecom-bretagne.eu', 'mariados@cisco.com'] , [] ), # [] -( 5574 , ['jack@atosc.org'] , [] ), # [] -( 5585 , ['dcrocker@bbiw.net'] , [] ), # [] -( 5589 , ['dan.ietf@sipez.com'] , [] ), # [] -( 5591 , ['ietf@hardakers.net'] , [] ), # [] -( 5592 , ['ietf@hardakers.net'] , [] ), # [] -( 5609 , ['rafa@um.es'] , [] ), # [] -( 5620 , [u'iab@iab.org'] , [] ), # [] -( 5623 , ['jeanlouis.leroux@orange-ftgroup.com'] , [] ), # [] -( 5626 , ['rohan@ekabal.com', 'francois.audet@skypelabs.com'] , [] ), # [] -( 5632 , ['yry@cs.yale.edu'] , [] ), # [] -( 5636 , ['shpark@kisa.or.kr', 'yjwon@kisa.or.kr', 'jilee@kisa.or.kr'] , [] ), # [] -( 5644 , ['emile.stephan@orange-ftgroup.com'] , [] ), # [] -( 5668 , ['yakov@juniper.net', 'dan.tappan@gmail.com'] , [] ), # [] -( 5673 , ['kpister@dustnetworks.com'] , [] ), # [] -( 5676 , ['alex@cisco.com'] , [] ), # [] -( 5690 , ['jiyengar@fandm.edu', 'david.ros@telecom-bretagne.eu', 'ae.arcia@telecom-bretagne.eu'] , [] ), # [] -( 5692 , ['maximilian.riegel@nsn.com'] , [] ), # [] -( 5694 , [u'iab@iab.org'] , [] ), # [] -( 5704 , [u'iab@iab.org'] , [] ), # [] -( 5707 , ['yong.xin@radisys.com'] , [] ), # [] -( 5710 , ['jpv@cisco.com'] , [] ), # [] -( 5711 , ['jpv@cisco.com'] , [] ), # [] -( 5712 , [] , [8259L, 106141L, 108799L] ), # [u'Curtis Villamizar', u'Denver Maddux', u'Amir Birjandi'] -( 5726 , ['qiuying@i2r.a-star.edu.sg'] , [] ), # [] -( 5728 , ['hlexow@stmi.com'] , [] ), # [] -( 5740 , ['macker@itd.nrl.navy.mil'] , [] ), # [] -( 5741 , [u'iab@iab.org'] , [] ), # [] -( 5744 , ['braden@isi.edu'] , [] ), # [] -( 5745 , [u'iab@iab.org'] , [] ), # [] -( 5748 , ['jijeong@kisa.or.kr'] , [] ), # [] # manually preserving [u'Seokung Yoon'] -( 5756 , ['wpolk@nist.gov'] , [] ), # [] -( 5758 , ['dbrown@certicom.com', 'quynh.dang@nist.gov', 'tim.polk@nist.gov', 'sts@aaa-sec.com', 'moriarty_kathleen@emc.com'] , [] ), # [] -( 5759 , ['llziegl@tycho.ncsc.mil'] , [] ), # [] -( 5760 , ['eve_schooler@acm.org'] , [] ), # [] -( 5770 , ['ari.keranen@ericsson.com'] , [] ), # [] -( 5771 , ['dmm@1-4-5.net'] , [] ), # [] -( 5791 , ['jak@ucop.edu'] , [] ), # [] -( 5793 , ['shanna@juniper.net', 'ryan.hurst@microsoft.com'] , [] ), # [] -( 5795 , ['lars-erik@lejonsson.com'] , [] ), # [] -( 5810 , ['jmh@joelhalpern.com', 'rha@zurich.ibm.com'] , [] ), # [] -( 5817 , ['jpv@cisco.com', 'jonathan.newton@cw.com'] , [] ), # [] -( 5820 , ['mw.chandra@gmail.com'] , [] ), # [] -( 5826 , ['gporcu@gmail.com'] , [] ), # [] -( 5827 , ['jblanton@irg.cs.ohiou.edu'] , [] ), # [] -( 5835 , ['steven.van_den_berghe@alcatel-lucent.com'] , [] ), # [] -( 5836 , ['sunseawq@huawei.com'] , [] ), # [] -( 5837 , ['alia.atlas@bt.com', 'jrrivers@yahoo.com'] , [] ), # [] -( 5841 , ['turkal@google.com', 'rhay@google.com'] , [] ), # [] -( 5842 , ['ejw@cse.ucsc.edu'] , [] ), # [] -( 5853 , ['bpenfield@acmepacket.com'] , [] ), # [] -( 5854 , ['tatsuhiro.t@gmail.com'] , [] ), # [] # manually preserving [u'Peter Poeml'] -( 5860 , ['malcolm.betts@rogers.com'] , [] ), # [] -( 5868 , ['ken-ichi.kamada@jp.yokogawa.com'] , [] ), # [] -( 5886 , ['jeanlouis.leroux@orange-ftgroup.com', 'jpv@cisco.com'] , [] ), # [] -( 5905 , ['jrmii@isc.org'] , [] ), # [] -( 5909 , ['jeanmichel.combes@orange-ftgroup.com'] , [] ), # [] -( 5922 , ['ajeffrey@alcatel-lucent.com'] , [] ), # [] -( 5930 , ['ssmurthy.nittala@freescale.com'] , [] ), # [] -( 5941 , ['sharon.boeyen@entrust.com', 'davidietf@gmail.com', 'michael.grandcolas@hotmail.com'] , [] ), # [] -( 5945 , ['flefauch@cisco.com', 'allan.guillou@sfr.com'] , [] ), # [] -( 5946 , ['allan.guillou@sfr.com', 'hemant.malik@airtel.in'] , [] ), # [] -( 5969 , [u'mark@townsley.net'] , [] ), # [] -( 5971 , ['robert.hancock@roke.co.uk'] , [] ), # [] -( 5975 , ['gash5107@yahoo.com'] , [] ), # [] -( 5984 , ['kalle@tankesaft.se'] , [] ), # [] -( 5994 , ['cherukuri@juniper.net'] , [] ), # [] -( 6001 , ['jean-louis.leroux@rd.francetelecom.com'] , [] ), # [] -( 6012 , ['fhyfeng@gmail.com'] , [] ), # [] -( 6019 , ['housley@vigilsec.com'] , [] ), # [] -( 6023 , ['rsj@cisco.com'] , [] ), # [] -( 6074 , ['vasile.radoaca@alcatel-lucent.com', 'luo@weiluo.net', 'bsd@cisco.com'] , [] ), # [] -( 6080 , ['dan.ietf@sipez.com'] , [] ), # [] -( 6088 , ['gerardog@qualcomm.com'] , [] ), # [] -( 6136 , ['dinmohan@hotmail.com'] , [] ), # [] -( 6141 , ['gao.yang2@zte.com.cn'] , [] ), # [] -( 6148 , [u'ramakrishnadtv@infosys.com'] , [] ), # [] -( 6163 , ['wataru.imajuku@ieee.org', 'ylee@huawei.com'] , [] ), # [] -( 6172 , ['david.black@emc.com'] , [] ), # [] -( 6176 , ['tim.polk@nist.gov'] , [] ), # [] -( 6177 , ['lea.roberts@stanford.edu'] , [] ), # [] -( 6194 , ['tim.polk@nist.gov'] , [] ), # [] -( 6198 , ['cristel@iij.ad.jp', 'ajea@tid.es'] , [] ), # [] -( 6206 , ['pal@cs.stanford.edu'] , [] ), # [] -( 6207 , [] , [105907L] ), # [u'Peter Saint-Andre'] -( 6213 , ['chopps@cisco.com'] , [] ), # [] -( 6214 , ['bob.hinden@gmail.com', 'brian.e.carpenter@gmail.com'] , [] ), # [] -( 6217 , ['tom@ritter.vg'] , [] ), # [] -( 6220 , ['john+ietf@jck.com'] , [] ), # [] -( 6238 , ['davidietf@gmail.com'] , [] ), # [] -( 6246 , ['yetik_serbest@labs.att.com', 'dinmohan@hotmail.com'] , [] ), # [] -( 6249 , [u'peter@poeml.de', 'tatsuhiro.t@gmail.com'] , [] ), # [] -( 6262 , ['s.ikonin@gmail.com'] , [110619L] ), # [u'Dmitry Yudin'] -( 6279 , ['sunseawq@huawei.com'] , [] ), # [] -( 6284 , ['tom.van_caenegem@alcatel-lucent.com'] , [] ), # [] -( 6285 , ['billvs@cisco.com'] , [] ), # [] -( 6287 , ['davidietf@gmail.com'] , [] ), # [] -( 6289 , ['jf.mule@cablelabs.com'] , [] ), # [] -( 6307 , ['david.black@emc.com'] , [] ), # [] -( 6310 , ['yaakov_s@rad.com'] , [] ), # [] -( 6311 , ['kagarigi@cisco.com', 'rsj@cisco.com'] , [] ), # [] -( 6329 , ['unbehagen@avaya.com', 'nbragg@ciena.com', 'david.i.allan@ericsson.com'] , [] ), # [] -( 6337 , ['shinji.okumura@softfront.jp'] , [] ), # [] -( 6338 , ['victoriano@uma.es'] , [] ), # [] -( 6348 , ['jeanlouis.leroux@orange-ftgroup.com'] , [] ), # [] -( 6353 , ['ietf@hardakers.net'] , [] ), # [] -( 6361 , ['d3e3e3@gmail.com'] , [] ), # [] -( 6389 , ['jeanlouis.leroux@orange-ftgroup.com'] , [] ), # [] -( 6403 , ['mpeck@alumni.virginia.edu'] , [] ), # [] -( 6405 , ['yiu_lee@cable.comcast.com'] , [] ), # [] -( 6414 , ['jkarthik@cisco.com', 'svapiwal@cisco.com', 'rajiv.papneja@huawei.com'] , [] ), # [] -( 6422 , ['sunseawq@huawei.com'] , [] ), # [] -( 6428 , ['swallow@cisco.com', 'jdrake@juniper.net'] , [] ), # [] -( 6445 , ['kkoushik@cisco.com'] , [] ), # [] -( 6468 , [] , [106918L] ), # [u'Qian Sun'] -( 6531 , ['maowei_ietf@cnnic.cn'] , [] ), # [] -( 6539 , ['ioannis.broustis@alcatel-lucent.com'] , [] ), # [] -( 6540 , ['cdl@asgaard.org'] , [] ), # [] -( 6548 , [u'iab@iab.org'] , [] ), # [] -( 6550 , ['roger.alexander@cooperindustries.com'] , [106872L] ), # [u'Thomas H. Clausen'] -( 6558 , [] , [106918L] ), # [u'Qian Sun'] -( 6568 , [] , [108959L] ), # [u'Nicolas Chevrollier'] -( 6580 , ['mkosjc@gmail.com', 'david.black@emc.com'] , [] ), # [] -( 6581 , ['arkady.kanevsky@gmail.com'] , [] ), # [] -( 6592 , ['cpignata@cisco.com'] , [] ), # [] -( 6593 , ['cpignata@cisco.com', 'jclarke@cisco.com', 'gsalguei@cisco.com'] , [] ), # [] -( 6625 , ['wim.henderickx@alcatel-lucent.be'] , [] ), # [] -( 6626 , [u'vidyan@qualcomm.com'] , [] ), # [] -( 6635 , [u'iab@iab.org'] , [] ), # [] -( 6656 , [] , [20861L] ), # [u'Jay Kumarasamy'] -( 6662 , ['joyzhang@cisco.com'] , [] ), # [] -( 6682 , ['luby@qualcomm.com'] , [] ), # [] -( 6688 , ['david.black@emc.com'] , [] ), # [] -( 6702 , ['tim.polk@nist.gov'] , [] ), # [] -( 6775 , ['cabo@tzi.org'] , [] ), # [] -( 6777 , ['xieg@cs.ucr.edu', 'rajiv.papneja@huawei.com', 'gjhhit@huawei.com'] , [] ), # [] -( 6909 , ['gfeige@cisco.com'] , [] ), # [] -( 6919 , ['ekr@rtfm.com'] , [] ), # [] -( 6926 , ['kurapati@juniper.net', 'volz@cisco.com', u'ramakrishnadtv@infosys.com'] , [] ), # [] -( 7011 , ['paitken@cisco.com'] , [] ), # [] -( 7070 , [] , [109178L] ), # [u'Andrew Sullivan'] -( 7079 , ['nick.delregno@verizon.com'] , [] ), # [] -( 7117 , ['chaitk@yahoo.com'] , [] ), # [] -( 7152 , ['raymond.key@ieee.org'] , [] ), # [] -( 7159 , ['tbray@textuality.com'] , [] ), # [] -( 7168 , ['inazar@deviantart.com'] , [] ), # [] -( 7169 , ['turners@ieca.com'] , [] ), # [] -( 7203 , [] , [112812L] ), # [u'Thomas Millar'] -( 7209 , ['wim.henderickx@alcatel-lucent.com', 'uttaro@att.com'] , [] ), # [] -( 7210 , ['tim.polk@nist.gov'] , [] ), # [] -( 7275 , ['matthew.bocci@alcatel-lucent.com', 'tnadeau@brocade.com'], [] ), # [] # manually preserving [u'Satoru Matsushima'] -( 7285 , ['ietf-alto@skiesel.de', 'w.roome@alcatel-lucent.com', 'richard_woundy@cable.comcast.com', 'sprevidi@cisco.com', 'shalunov@shlang.com'] , [] ), # [] -( 7286 , ['haibin.song@huawei.com'] , [108750L] ), # [u'Song Yongchao'] -( 7322 , ['rfc-editor@rfc-editor.org'] , [] ), # [] -( 7326 , ['jparello@cisco.com'] , [] ), # [] -( 7396 , ['jasnell@gmail.com', 'paul.hoffman@vpnc.org'] , [] ), # [] -( 7432 , ['jdrake@juniper.net', 'wim.henderickx@alcatel-lucent.com'] , [] ), # [] -( 7445 , [] , [113836L] ), # [u'Vizdal Ales'] -( 7485 , [u'steve.sheng@icann.org'] , [] ), # [] -( 7511 , ['max@rfc2324.org'] , [] ), # [] -( 7514 , ['mjl@caida.org'] , [] ), # [] -( 7532 , [] , [107959L] ), # [u'Daniel Ellard'] -( 7533 , [] , [107959L] ), # [u'Daniel Ellard'] -( 7579 , ['hanjianrui@huawei.com'] , [] ), # [] -( 7581 , ['hanjianrui@huawei.com'] , [] ), # [] -( 7595 , [] , [110451L] ), # [u'Larry Masinter'] -( 7620 , [] , [117728L, 113610L, 110125L, 113455L] ), # [u'Richard Stewart Wheeldon', u'Sophie Durel', u'David Binet', u'Li Xue'] -( 7651 , [u'noblea@cisco.com'] , [] ), # [] -( 7697 , ['sboutros@vmware.com'] , [] ), # [] -( 7698 , ['fu.xihua@stairnote.com', 'ihussain@infinera.com', 'zhangfatai@huawei.com', 'daniele.ceccarelli@ericsson.com'] , [] ), # [] -( 7723 , [] , [109533L] ), # [u'Stuart Cheshire'] -( 7831 , [] , [2097L] ), # [u'Eliot Lear'] -#( 7841 , [] , [104167L] ), # [u'IAB'] # manually preserving iab -( 7846 , [] , [110689L] ), # [u'Gu Yingjie'] -( 7916 , ['pushpasis.ietf@gmail.com'] , [] ), # [] -#( 7996 , [] , [104167L] ), # [u'IAB'] # manually preserving IAB -( 8135 , ['mansaxel@besserwisser.org', 'magda@netinsight.net'] , [] ), # [] -( 8136 , ['bob.hinden@gmail.com', 'brian.e.carpenter@gmail.com'] , [] ), # [] -( 8140 , ['adrian@olddog.co.uk'] , [] ), # [] - -] - -def plain_name(person): - prefix, first, middle, last, suffix = name_parts(person.name) - return u" ".join([first, last]) - -def forward(apps, schema_editor): - Document = apps.get_model('doc','Document') - Email = apps.get_model('person', 'Email') - EditedAuthorsDocEvent = apps.get_model('doc','EditedAuthorsDocEvent') - today = datetime.date.today().isoformat() - print("") # don't let tqdm overwrite the migration name - for rfc_num, addlist, removelist in tqdm(changes): - rfc = Document.objects.get(docalias__name='rfc%d'%rfc_num) - old_authors = ", ".join([plain_name(a.person) for a in rfc.authors.distinct()]) - rfc.documentauthor_set.filter(author__person_id__in=removelist).delete() - for addr in addlist: - email = Email.objects.get(address__iexact=addr) - rfc.documentauthor_set.create(author_id=email.address, order = -1) - new_authors = ", ".join([plain_name(a.person) for a in rfc.authors.distinct()]) - EditedAuthorsDocEvent.objects.create( - by_id=1, # (System) - type='edited_authors', - doc=rfc, - rev=rfc.rev, - desc='Changed document authors from "%s" to "%s"'%(old_authors,new_authors), - basis="recomputed by comparing rfc_editor database and parsed document author lists "+today, - ) - -def reverse(apps, schema_editor): - Document = apps.get_model('doc','Document') - Document.objects.get(docalias__name='rfc1070').documentauthor_set.distinct().delete() - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0019_add_discovered_people'), - ('doc', '0028_editedauthorsdocevent'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/doc/migrations/0030_author_revamp_and_extra_attributes.py b/ietf/doc/migrations/0030_author_revamp_and_extra_attributes.py deleted file mode 100644 index 465d2242e..000000000 --- a/ietf/doc/migrations/0030_author_revamp_and_extra_attributes.py +++ /dev/null @@ -1,115 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0020_formallanguagename'), - ('doc', '0029_update_rfc_authors'), - ] - - operations = [ - migrations.AddField( - model_name='dochistory', - name='words', - field=models.IntegerField(null=True, blank=True), - ), - migrations.AddField( - model_name='document', - name='words', - field=models.IntegerField(null=True, blank=True), - ), - migrations.AddField( - model_name='dochistory', - name='formal_languages', - field=models.ManyToManyField(help_text=b'Formal languages used in document', to='name.FormalLanguageName', blank=True), - ), - migrations.AddField( - model_name='document', - name='formal_languages', - field=models.ManyToManyField(help_text=b'Formal languages used in document', to='name.FormalLanguageName', blank=True), - ), - migrations.RemoveField( - model_name='dochistory', - name='authors', - ), - migrations.RemoveField( - model_name='document', - name='authors', - ), - migrations.AddField( - model_name='dochistoryauthor', - name='affiliation', - field=models.CharField(help_text=b'Organization/company used by author for submission', max_length=100, blank=True), - ), - migrations.AddField( - model_name='dochistoryauthor', - name='country', - field=models.CharField(blank=True, help_text=b'Country used by author for submission', max_length=255), - ), - migrations.RenameField( - model_name='dochistoryauthor', - old_name='author', - new_name='email', - ), - migrations.AlterField( - model_name='dochistoryauthor', - name='email', - field=models.ForeignKey(blank=True, to='person.Email', help_text=b'Email address used by author for submission', null=True), - ), - migrations.AddField( - model_name='dochistoryauthor', - name='person', - field=models.ForeignKey(blank=True, to='person.Person', null=True), - ), - migrations.AddField( - model_name='documentauthor', - name='affiliation', - field=models.CharField(help_text=b'Organization/company used by author for submission', max_length=100, blank=True), - ), - migrations.AddField( - model_name='documentauthor', - name='country', - field=models.CharField(blank=True, help_text=b'Country used by author for submission', max_length=255), - ), - migrations.RenameField( - model_name='documentauthor', - old_name='author', - new_name='email', - ), - migrations.AlterField( - model_name='documentauthor', - name='email', - field=models.ForeignKey(blank=True, to='person.Email', help_text=b'Email address used by author for submission', null=True), - ), - migrations.AddField( - model_name='documentauthor', - name='person', - field=models.ForeignKey(blank=True, to='person.Person', null=True), - ), - migrations.AlterField( - model_name='dochistoryauthor', - name='document', - field=models.ForeignKey(related_name='documentauthor_set', to='doc.DocHistory'), - ), - migrations.AlterField( - model_name='dochistoryauthor', - name='order', - field=models.IntegerField(default=1), - ), - migrations.RunSQL("update doc_documentauthor a inner join person_email e on a.email_id = e.address set a.person_id = e.person_id;", migrations.RunSQL.noop), - migrations.RunSQL("update doc_dochistoryauthor a inner join person_email e on a.email_id = e.address set a.person_id = e.person_id;", migrations.RunSQL.noop), - migrations.AlterField( - model_name='documentauthor', - name='person', - field=models.ForeignKey(to='person.Person'), - ), - migrations.AlterField( - model_name='dochistoryauthor', - name='person', - field=models.ForeignKey(to='person.Person'), - ), - ] diff --git a/ietf/doc/migrations/0031_remove_fake_email_adresses.py b/ietf/doc/migrations/0031_remove_fake_email_adresses.py deleted file mode 100644 index d6888a517..000000000 --- a/ietf/doc/migrations/0031_remove_fake_email_adresses.py +++ /dev/null @@ -1,58 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def fix_invalid_emails(apps, schema_editor): - Email = apps.get_model("person", "Email") - Role = apps.get_model("group", "Role") - RoleHistory = apps.get_model("group", "RoleHistory") - DocumentAuthor = apps.get_model("doc", "DocumentAuthor") - DocHistoryAuthor = apps.get_model("doc", "DocHistoryAuthor") - - e = Email.objects.filter(address="unknown-email-Gigi-Karmous-Edwards").first() - if e: - # according to ftp://ietf.org/ietf/97dec/adsl-minutes-97dec.txt - new_e, _ = Email.objects.get_or_create( - address="GiGi.Karmous-Edwards@pulse.com", - primary=e.primary, - active=e.active, - person=e.person, - ) - Role.objects.filter(email=e).update(email=new_e) - RoleHistory.objects.filter(email=e).update(email=new_e) - e.delete() - - e = Email.objects.filter(address="unknown-email-Pat-Thaler").first() - if e: - # current chair email - new_e = Email.objects.get(address="pat.thaler@broadcom.com") - Role.objects.filter(email=e).update(email=new_e) - RoleHistory.objects.filter(email=e).update(email=new_e) - e.delete() - - e = Email.objects.filter(address="unknown-email-Greg->").first() - if e: - # current email - new_e = Email.objects.get(address="gregimirsky@gmail.com") - DocumentAuthor.objects.filter(email=e).update(email=new_e) - DocHistoryAuthor.objects.filter(email=e).update(email=new_e) - e.delete() - - DocumentAuthor.objects.filter(email__address__startswith="unknown-email-").exclude(email__address__contains="@").update(email=None) - DocHistoryAuthor.objects.filter(email__address__startswith="unknown-email-").exclude(email__address__contains="@").update(email=None) - Email.objects.exclude(address__contains="@").filter(address__startswith="unknown-email-").delete() - - assert not Email.objects.filter(address__startswith="unknown-email-") - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0030_author_revamp_and_extra_attributes'), - ('person', '0014_auto_20160613_0751'), - ('group', '0009_auto_20150930_0758'), - ] - - operations = [ - migrations.RunPython(fix_invalid_emails, migrations.RunPython.noop), - ] diff --git a/ietf/doc/migrations/0032_auto_20170731_0508.py b/ietf/doc/migrations/0032_auto_20170731_0508.py deleted file mode 100644 index 72e20dc21..000000000 --- a/ietf/doc/migrations/0032_auto_20170731_0508.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-31 05:08 -from __future__ import unicode_literals - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0031_remove_fake_email_adresses'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='name', - field=models.CharField(max_length=255, primary_key=True, serialize=False, validators=[django.core.validators.RegexValidator(b'^[-a-z0-9]+$', b'Provide a valid document name consisting of lowercase letters, numbers and hyphens.', b'invalid')]), - ), - ] diff --git a/ietf/doc/migrations/0033_fix_conflict_review_dochistory.py b/ietf/doc/migrations/0033_fix_conflict_review_dochistory.py deleted file mode 100644 index 6acaad77a..000000000 --- a/ietf/doc/migrations/0033_fix_conflict_review_dochistory.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-08-14 13:18 -from __future__ import unicode_literals - -from django.db import migrations - -changes = [ - [ 'conflict-review-irtf-samrg-common-api', '02', '2013-10-04 10:38:54', '2013-10-04 10:38:52' ], - [ 'conflict-review-irtf-dtnrg-dgram-clayer', '02', '2013-08-25 08:46:03', '2013-08-25 08:45:53' ], - [ 'conflict-review-irtf-dtnrg-dgram-clayer', '01', '2013-08-24 12:25:14', '2013-08-24 12:25:13' ], - [ 'conflict-review-hausenblas-csv-fragment', '02', '2013-10-10 10:17:53', '2013-10-10 10:17:52' ], - [ 'conflict-review-hoffine-already-dotless', '04', '2013-10-10 15:53:14', '2013-10-10 15:53:13' ], - [ 'conflict-review-irtf-sdnrg-layer-terminology', '01', '2014-10-11 06:51:30', '2014-10-11 06:51:29' ], - [ 'conflict-review-gont-dhcpv6-stable-privacy-addresses', '01', '2016-05-18 17:51:58', '2016-05-18 17:51:55' ], -] - -def forward(apps, schema_editor): - DocHistory = apps.get_model('doc','DocHistory') - for name, rev, old, new in changes: - DocHistory.objects.filter(name=name,rev=rev,time=old).update(time=new) - - -def reverse(apps, schema_editor): - DocHistory = apps.get_model('doc','DocHistory') - for name, rev, old, new in changes: - DocHistory.objects.filter(name=name,rev=rev,time=new).update(time=old) - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0032_auto_20170731_0508'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/doc/migrations/0034_documenturl.py b/ietf/doc/migrations/0034_documenturl.py deleted file mode 100644 index d198be8e1..000000000 --- a/ietf/doc/migrations/0034_documenturl.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-09-26 05:36 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0027_docurltagname'), - ('doc', '0033_fix_conflict_review_dochistory'), - ] - - operations = [ - migrations.CreateModel( - name='DocumentURL', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('desc', models.CharField(blank=True, default=b'', max_length=255)), - ('url', models.URLField()), - ('doc', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), - ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocUrlTagName')), - ], - ), - ] diff --git a/ietf/doc/migrations/0035_auto_20171029_1414.py b/ietf/doc/migrations/0035_auto_20171029_1414.py deleted file mode 100644 index b369682c0..000000000 --- a/ietf/doc/migrations/0035_auto_20171029_1414.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-10-29 14:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0034_documenturl'), - ] - - operations = [ - migrations.AlterField( - model_name='documenturl', - name='url', - field=models.URLField(max_length=512), - ), - ] diff --git a/ietf/group/migrations/0001_initial.py b/ietf/group/migrations/0001_initial.py index 4ec015f5e..2f45322c1 100644 --- a/ietf/group/migrations/0001_initial.py +++ b/ietf/group/migrations/0001_initial.py @@ -1,12 +1,17 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations import datetime +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models class Migration(migrations.Migration): + initial = True + dependencies = [ ('name', '0001_initial'), ('person', '0001_initial'), @@ -17,184 +22,164 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Group', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), ('name', models.CharField(max_length=80)), ('description', models.TextField(blank=True)), - ('list_email', models.CharField(max_length=64, blank=True)), - ('list_subscribe', models.CharField(max_length=255, blank=True)), - ('list_archive', models.CharField(max_length=255, blank=True)), + ('list_email', models.CharField(blank=True, max_length=64)), + ('list_subscribe', models.CharField(blank=True, max_length=255)), + ('list_archive', models.CharField(blank=True, max_length=255)), ('comments', models.TextField(blank=True)), - ('acronym', models.SlugField(unique=True, max_length=40)), - ('ad', models.ForeignKey(verbose_name=b'AD', blank=True, to='person.Person', null=True)), - ('charter', models.OneToOneField(related_name='chartered_group', null=True, blank=True, to='doc.Document')), - ('parent', models.ForeignKey(blank=True, to='group.Group', null=True)), - ('state', models.ForeignKey(to='name.GroupStateName', null=True)), - ('type', models.ForeignKey(to='name.GroupTypeName', null=True)), - ('unused_states', models.ManyToManyField(help_text=b'Document states that have been disabled for the group', to='doc.State', blank=True)), - ('unused_tags', models.ManyToManyField(help_text=b'Document tags that have been disabled for the group', to='name.DocTagName', blank=True)), + ('acronym', models.SlugField(max_length=40, unique=True)), + ('charter', ietf.utils.models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='chartered_group', to='doc.Document')), + ('parent', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('state', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='name.GroupStateName')), + ('type', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='name.GroupTypeName')), + ('unused_states', models.ManyToManyField(blank=True, help_text=b'Document states that have been disabled for the group.', to='doc.State')), + ('unused_tags', models.ManyToManyField(blank=True, help_text=b'Document tags that have been disabled for the group.', to='name.DocTagName')), ], options={ 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='GroupEvent', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now, help_text=b'When the event happened')), - ('type', models.CharField(max_length=50, choices=[(b'changed_state', b'Changed state'), (b'added_comment', b'Added comment'), (b'info_changed', b'Changed metadata'), (b'requested_close', b'Requested closing group'), (b'changed_milestone', b'Changed milestone'), (b'sent_notification', b'Sent notification')])), + ('type', models.CharField(choices=[(b'changed_state', b'Changed state'), (b'added_comment', b'Added comment'), (b'info_changed', b'Changed metadata'), (b'requested_close', b'Requested closing group'), (b'changed_milestone', b'Changed milestone'), (b'sent_notification', b'Sent notification'), (b'status_update', b'Status update')], max_length=50)), ('desc', models.TextField()), ], options={ 'ordering': ['-time', 'id'], }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ChangeStateGroupEvent', - fields=[ - ('groupevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='group.GroupEvent')), - ('state', models.ForeignKey(to='name.GroupStateName')), - ], - options={ - }, - bases=('group.groupevent',), ), migrations.CreateModel( name='GroupHistory', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), ('name', models.CharField(max_length=80)), ('description', models.TextField(blank=True)), - ('list_email', models.CharField(max_length=64, blank=True)), - ('list_subscribe', models.CharField(max_length=255, blank=True)), - ('list_archive', models.CharField(max_length=255, blank=True)), + ('list_email', models.CharField(blank=True, max_length=64)), + ('list_subscribe', models.CharField(blank=True, max_length=255)), + ('list_archive', models.CharField(blank=True, max_length=255)), ('comments', models.TextField(blank=True)), ('acronym', models.CharField(max_length=40)), - ('ad', models.ForeignKey(verbose_name=b'AD', blank=True, to='person.Person', null=True)), - ('group', models.ForeignKey(related_name='history_set', to='group.Group')), - ('parent', models.ForeignKey(blank=True, to='group.Group', null=True)), - ('state', models.ForeignKey(to='name.GroupStateName', null=True)), - ('type', models.ForeignKey(to='name.GroupTypeName', null=True)), - ('unused_states', models.ManyToManyField(help_text=b'Document states that have been disabled for the group', to='doc.State', blank=True)), - ('unused_tags', models.ManyToManyField(help_text=b'Document tags that have been disabled for the group', to='name.DocTagName', blank=True)), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='history_set', to='group.Group')), + ('parent', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('state', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='name.GroupStateName')), + ('type', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='name.GroupTypeName')), + ('unused_states', models.ManyToManyField(blank=True, help_text=b'Document states that have been disabled for the group.', to='doc.State')), + ('unused_tags', models.ManyToManyField(blank=True, help_text=b'Document tags that have been disabled for the group.', to='name.DocTagName')), ], options={ 'verbose_name_plural': 'group histories', }, - bases=(models.Model,), ), migrations.CreateModel( name='GroupMilestone', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('desc', models.CharField(max_length=500, verbose_name=b'Description')), ('due', models.DateField()), - ('resolved', models.CharField(help_text=b'Explanation of why milestone is resolved (usually "Done"), or empty if still due', max_length=50, blank=True)), + ('resolved', models.CharField(blank=True, help_text=b'Explanation of why milestone is resolved (usually "Done"), or empty if still due.', max_length=50)), ('time', models.DateTimeField(auto_now=True)), - ('docs', models.ManyToManyField(to='doc.Document', blank=True)), - ('group', models.ForeignKey(to='group.Group')), - ('state', models.ForeignKey(to='name.GroupMilestoneStateName')), + ('docs', models.ManyToManyField(blank=True, to='doc.Document')), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('state', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.GroupMilestoneStateName')), ], options={ 'ordering': ['due', 'id'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='GroupMilestoneHistory', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('desc', models.CharField(max_length=500, verbose_name=b'Description')), ('due', models.DateField()), - ('resolved', models.CharField(help_text=b'Explanation of why milestone is resolved (usually "Done"), or empty if still due', max_length=50, blank=True)), + ('resolved', models.CharField(blank=True, help_text=b'Explanation of why milestone is resolved (usually "Done"), or empty if still due.', max_length=50)), ('time', models.DateTimeField()), - ('docs', models.ManyToManyField(to='doc.Document', blank=True)), - ('group', models.ForeignKey(to='group.Group')), - ('milestone', models.ForeignKey(related_name='history_set', to='group.GroupMilestone')), - ('state', models.ForeignKey(to='name.GroupMilestoneStateName')), + ('docs', models.ManyToManyField(blank=True, to='doc.Document')), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('milestone', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='history_set', to='group.GroupMilestone')), + ('state', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.GroupMilestoneStateName')), ], options={ 'ordering': ['due', 'id'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='GroupStateTransitions', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('group', models.ForeignKey(to='group.Group')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ('next_states', models.ManyToManyField(related_name='previous_groupstatetransitions_states', to='doc.State')), - ('state', models.ForeignKey(help_text=b'State for which the next states should be overridden', to='doc.State')), + ('state', ietf.utils.models.ForeignKey(help_text=b'State for which the next states should be overridden', on_delete=django.db.models.deletion.CASCADE, to='doc.State')), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='GroupURL', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255)), ('url', models.URLField()), - ('group', models.ForeignKey(to='group.Group')), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MilestoneGroupEvent', - fields=[ - ('groupevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='group.GroupEvent')), - ('milestone', models.ForeignKey(to='group.GroupMilestone')), - ], - options={ - }, - bases=('group.groupevent',), ), migrations.CreateModel( name='Role', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('email', models.ForeignKey(help_text=b'Email address used by person for this role', to='person.Email')), - ('group', models.ForeignKey(to='group.Group')), - ('name', models.ForeignKey(to='name.RoleName')), - ('person', models.ForeignKey(to='person.Person')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('email', ietf.utils.models.ForeignKey(help_text=b'Email address used by person for this role.', on_delete=django.db.models.deletion.CASCADE, to='person.Email')), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('name', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.RoleName')), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), ], options={ + 'ordering': ['name_id'], }, - bases=(models.Model,), ), migrations.CreateModel( name='RoleHistory', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('email', models.ForeignKey(help_text=b'Email address used by person for this role', to='person.Email')), - ('group', models.ForeignKey(to='group.GroupHistory')), - ('name', models.ForeignKey(to='name.RoleName')), - ('person', models.ForeignKey(to='person.Person')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('email', ietf.utils.models.ForeignKey(help_text=b'Email address used by person for this role.', on_delete=django.db.models.deletion.CASCADE, to='person.Email')), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.GroupHistory')), + ('name', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.RoleName')), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), ], options={ 'verbose_name_plural': 'role histories', }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='ChangeStateGroupEvent', + fields=[ + ('groupevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='group.GroupEvent')), + ('state', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.GroupStateName')), + ], + bases=('group.groupevent',), + ), + migrations.CreateModel( + name='MilestoneGroupEvent', + fields=[ + ('groupevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='group.GroupEvent')), + ('milestone', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.GroupMilestone')), + ], + bases=('group.groupevent',), ), migrations.AddField( model_name='groupevent', name='by', - field=models.ForeignKey(to='person.Person'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person'), ), migrations.AddField( model_name='groupevent', name='group', - field=models.ForeignKey(to='group.Group'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group'), ), ] diff --git a/ietf/group/migrations/0002_auto_20150208_1012.py b/ietf/group/migrations/0002_auto_20150208_1012.py deleted file mode 100644 index adc2e947a..000000000 --- a/ietf/group/migrations/0002_auto_20150208_1012.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def create_ad_roles(apps, schema_editor): - RoleName = apps.get_model('name', 'RoleName') - Group = apps.get_model('group', 'Group') - # - rolename, __ = RoleName.objects.get_or_create(slug='ad') - for group in Group.objects.exclude(ad=None): - email = None - if group.parent: - ad_rolematch = group.parent.role_set.filter(person=group.ad,name=rolename).first() - if ad_rolematch: - email = ad_rolematch.email - if not email: - email = group.ad.email_set.order_by("-active","-time").first() - try: - group.role_set.get_or_create(name=rolename,person=group.ad,email=email) - except Exception as e: - import sys - sys.stderr.write('Exeption: %s\n' % e) - raise - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0001_initial'), - ] - - operations = [ - migrations.RunPython(create_ad_roles), - ] diff --git a/ietf/group/migrations/0003_auto_20150304_0743.py b/ietf/group/migrations/0003_auto_20150304_0743.py deleted file mode 100644 index 0e45105d7..000000000 --- a/ietf/group/migrations/0003_auto_20150304_0743.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations # pyflakes:ignore - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0002_auto_20150208_1012'), - ] - - operations = [ - migrations.RemoveField( - model_name='group', - name='ad', - ), - migrations.RemoveField( - model_name='grouphistory', - name='ad', - ), - ] diff --git a/ietf/group/migrations/0004_auto_20150430_0847.py b/ietf/group/migrations/0004_auto_20150430_0847.py deleted file mode 100644 index 71ce2d71b..000000000 --- a/ietf/group/migrations/0004_auto_20150430_0847.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0003_auto_20150304_0743'), - ] - - operations = [ - migrations.AlterField( - model_name='group', - name='unused_states', - field=models.ManyToManyField(help_text=b'Document states that have been disabled for the group.', to='doc.State', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='group', - name='unused_tags', - field=models.ManyToManyField(help_text=b'Document tags that have been disabled for the group.', to='name.DocTagName', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='grouphistory', - name='unused_states', - field=models.ManyToManyField(help_text=b'Document states that have been disabled for the group.', to='doc.State', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='grouphistory', - name='unused_tags', - field=models.ManyToManyField(help_text=b'Document tags that have been disabled for the group.', to='name.DocTagName', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='groupmilestone', - name='resolved', - field=models.CharField(help_text=b'Explanation of why milestone is resolved (usually "Done"), or empty if still due.', max_length=50, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='groupmilestonehistory', - name='resolved', - field=models.CharField(help_text=b'Explanation of why milestone is resolved (usually "Done"), or empty if still due.', max_length=50, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='role', - name='email', - field=models.ForeignKey(help_text=b'Email address used by person for this role.', to='person.Email'), - preserve_default=True, - ), - migrations.AlterField( - model_name='rolehistory', - name='email', - field=models.ForeignKey(help_text=b'Email address used by person for this role.', to='person.Email'), - preserve_default=True, - ), - ] diff --git a/ietf/group/migrations/0005_auto_20150504_0726.py b/ietf/group/migrations/0005_auto_20150504_0726.py deleted file mode 100644 index 5690ad9f4..000000000 --- a/ietf/group/migrations/0005_auto_20150504_0726.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def create_iab_roles(apps, schema_editor): - Role = apps.get_model('group','Role') - Group = apps.get_model('group','Group') - Person = apps.get_model('person','Person') - - iab = Group.objects.get(acronym='iab') - - iab_names = [ - 'Jari Arkko', - 'Mary Barnes', - 'Marc Blanchet', - 'Ralph Droms', - 'Ted Hardie', - 'Joe Hildebrand', - 'Russ Housley', - 'Erik Nordmark', - 'Robert Sparks', - 'Andrew Sullivan', - 'Dave Thaler', - 'Brian Trammell', - 'Suzanne Woolf', - ] - - for name in iab_names: - person = Person.objects.get(name=name) - person.role_set.add(Role(name_id='member',group=iab,person=person,email_id=person.email_set.filter(active=True).order_by('-time').first().address)) - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0004_auto_20150430_0847'), - ] - - operations = [ - migrations.RunPython(create_iab_roles), - ] diff --git a/ietf/group/migrations/0006_auto_20150718_0509.py b/ietf/group/migrations/0006_auto_20150718_0509.py deleted file mode 100644 index 415756551..000000000 --- a/ietf/group/migrations/0006_auto_20150718_0509.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def add_area_descriptions(apps, schema_editor): - Group = apps.get_model("group","Group") - Group.objects.filter(acronym='gen').update(description="""The General Area consists of a few IETF WGs and other activities focused on supporting, updating and maintaining the IETF standards development process. As General AD, the IETF Chair manages the General Area Review Team (Gen-ART) and other IETF-wide directorates.""") - - Group.objects.filter(acronym='int').update(description="""The primary technical topics covered by the Internet Area include IP layer (both IPv4 and IPv6), implications of IPv4 address depletion, co-existence between the IP versions, DNS, DHCP, host and router configuration, mobility, multihoming, identifier-locator separation, VPNs and pseudowires along with related MPLS issues, and various link layer technologies. The Internet Area is also responsible for specifying how IP will run over new link layer protocols.""") - - Group.objects.filter(acronym='ops').update(description="""The primary technical areas covered by the Operations & Management (OPS) Area include: Network Management, AAA, and various operational issues facing the Internet such as DNS operations, IPv6 operations, operational security and Routing operations. - -Unlike most IETF areas, the Operations & Management area is logically divided into two separate functions: Network Management and Operations. - -The Network Management function covers Internet management and AAA, and the related protocols, including but not limited to NETCONF, SNMP, RADIUS, Diameter, and CAPWAP, and of data modeling and data modeling languages used in management such as SMI and YANG. Another important role of the Management function is to identify potential or actual management issues regarding IETF protocols and documents in all areas, and to work with the other areas to resolve those issues. - -The Operations function is largely responsible for soliciting operator feedback and input regarding IETF work. Another important role of the Operations function is to identify potential or actual operational issues regarding IETF protocols and documents in all areas, and to work with the other areas to resolve those issues. - -The OPS area intersects most often with the Routing, Internet and Security areas.""") - - Group.objects.filter(acronym='rtg').update(description="""The Routing Area is responsible for ensuring continuous operation of the Internet routing system by maintaining the scalability and stability characteristics of the existing routing protocols, as well as developing new protocols, extensions, and bug fixes in a timely manner. Forwarding methods (such as destination-based unicast and multicast forwarding, MPLS, and pseudowire) as well as associated routing and signalling protocols (such as OSPF, IS-IS, BGP, RSVP-TE, LDP, PIM, L1-, L2-, and L3-VPNs) are within the scope of the Routing Area. Traffic engineering routing and signaling protocols are in scope, as is the architecture and protocols for the Path Computation Element that helps to select end-to-end paths for traffic-engineered routing. The Routing Area also works on Generalized MPLS used in the control plane of optical networks as well as security aspects of the routing system. The Routing Area has recently developed a routing protocol (RPL) for use in low-powered and lossy networks. - -The Routing Area intersects most frequently with the Internet Area, the Operations & Management Area, and the Security Area. Interaction with the Internet Area concentrates mainly on IP Forwarding and Multicast. With the Operations & Management Area the focus is on MIB development. With the Security area the focus is on routing protocol security. - -Current work in the Routing Area has some overlap with work in other SDOs, in particular interactions with the ITU-T on MPLS-TP.""") - - Group.objects.filter(acronym='sec').update(description="""The Security Area is the home for working groups focused on security protocols. They provide one or more of the security services: integrity, authentication, non-repudiation, confidentiality, and access control. Since many of the security mechanisms needed to provide these security services employ cryptography, key management is also vital. - -The Security Area intersects with all other IETF Areas, and the participants are frequently involved with activities in the working groups from other areas. This involvement focuses upon practical application of Security Area protocols and technologies to the protocols of other Areas.""") - - Group.objects.filter(acronym='tsv').update(description="""The transport and services area - usually just called "transport area" or "TSV area" - covers a range of technical topics related to data transport in the Internet. - -The Transport Area works on mechanisms related to end-to-end data transport to support Internet applications and services that exchange potentially large volumes of traffic at potentially high bandwidths. A key focus are mechanisms to detect and react to congestion in the Internet, such as the congestion control algorithms in Internet transport control protocols such as TCP, SCTP, and DCCP, as well as congestion management schemes such as PCN and CONEX. - -Current and new transport work includes congestion signaling and reporting, forward error correction, multicast, QoS and reservation signaling, DiffServ? and congestion control for unresponsive flows, NAT regularization and specification, storage protocols for the Internet, peer-to-peer streaming, performance metrics for Internet paths, experimentation with congestion control schemes developed in the IRTF, multipath extensions to existing transport protocols, congestion control for "background" bulk transfers, and extensions to the IETF protocols for multimedia transport. - -The transport area intersects most frequently with Internet area, the applications area, the RAI area, the security area and several IRTF research groups.""") - - Group.objects.filter(acronym='art').update(description="""The ART area develops application protocols and architectures in the IETF. The work in the area falls into roughly three categories, with blurry distinctions between them. One category consists of protocols and architectures specifically designed to support delay-sensitive interpersonal communications via voice, video, instant messaging, presence, and other means, otherwise known as "real-time" applications and services. A second category consists of protocols and architectures to support applications that may be more tolerant of delay, including HTTP, email, and FTP. The third category consists of building blocks that are designed for use across a wide variety of applications and may be employed by both real-time and non-real-time applications, such as URI schemes, MIME types, authentication mechanisms, data formats, metrics, and codecs.""") - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0005_auto_20150504_0726'), - ] - - operations = [ - migrations.RunPython(add_area_descriptions) - ] diff --git a/ietf/group/migrations/0007_concluded_group_cleanup.py b/ietf/group/migrations/0007_concluded_group_cleanup.py deleted file mode 100644 index 5287baf05..000000000 --- a/ietf/group/migrations/0007_concluded_group_cleanup.py +++ /dev/null @@ -1,288 +0,0 @@ -# -*- 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) - ] diff --git a/ietf/group/migrations/0008_auto_20160505_0523.py b/ietf/group/migrations/0008_auto_20160505_0523.py deleted file mode 100644 index 74687a1f8..000000000 --- a/ietf/group/migrations/0008_auto_20160505_0523.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0007_concluded_group_cleanup'), - ] - - operations = [ - migrations.AlterField( - model_name='groupevent', - name='type', - field=models.CharField(max_length=50, choices=[(b'changed_state', b'Changed state'), (b'added_comment', b'Added comment'), (b'info_changed', b'Changed metadata'), (b'requested_close', b'Requested closing group'), (b'changed_milestone', b'Changed milestone'), (b'sent_notification', b'Sent notification'), (b'status_update', b'Status update')]), - preserve_default=True, - ), - ] diff --git a/ietf/group/migrations/0009_auto_20150930_0758.py b/ietf/group/migrations/0009_auto_20150930_0758.py deleted file mode 100644 index 2071cc898..000000000 --- a/ietf/group/migrations/0009_auto_20150930_0758.py +++ /dev/null @@ -1,120 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals -import os, datetime - -from django.db import migrations -from django.conf import settings - -def rename_x3s3dot3_forwards(apps, schema_editor): - Group = apps.get_model("group", "Group") - Group.objects.filter(acronym="x3s3.3").update(acronym="x3s3dot3") - -def rename_x3s3dot3_backwards(apps, schema_editor): - Group = apps.get_model("group", "Group") - Group.objects.filter(acronym="x3s3dot3").update(acronym="x3s3.3") - -def get_rid_of_empty_charters(apps, schema_editor): - Group = apps.get_model("group", "Group") - - for acronym in ["fun", "multrans", "cicm", "woes", "dcon", "sdn", "i2aex", "rpsreqs", "antitrust", "iprbis", "dsii"]: - group = Group.objects.get(acronym=acronym) - if group.charter: - charter = group.charter - - # clean up any empty files left behind - revisions = set() - revisions.add(charter.rev) - for h in charter.history_set.all(): - revisions.add(h.rev) - - for rev in revisions: - path = os.path.join(settings.CHARTER_PATH, '%s-%s.txt' % (charter.name, rev)) - try: - if os.path.exists(path): - with open(path, 'r') as f: - if f.read() == "": - os.remove(path) - except IOError: - pass - - group.charter = None - group.save() - - charter.delete() - - -def fix_empty_rrg_charter(apps, schema_editor): - Document = apps.get_model("doc", "Document") - DocEvent = apps.get_model("doc", "DocEvent") - NewRevisionDocEvent = apps.get_model("doc", "NewRevisionDocEvent") - Person = apps.get_model("person", "Person") - State = apps.get_model("doc", "State") - - charter = Document.objects.get(name="charter-irtf-rrg") - system = Person.objects.get(name="(System)") - - if charter.rev == "00-00": - charter.rev = "01" - charter.time = datetime.datetime.now() - charter.save() - - NewRevisionDocEvent.objects.create( - rev=charter.rev, - doc=charter, - type="new_revision", - by=system, - desc="New version available: %s-%s.txt" % (charter.name, charter.rev), - time=charter.time, - ) - - DocEvent.objects.create( - doc=charter, - type="added_comment", - by=system, - desc="Added existing charter", - time=charter.time, - ) - - approved = State.objects.get(type="charter", slug="approved") - already_set = list(charter.states.filter(type="charter")) - if already_set: - charter.states.remove(*already_set) - charter.states.add(approved) - - path = os.path.join(settings.CHARTER_PATH, '%s-%s.txt' % (charter.name, charter.rev)) - with open(path, "w") as f: - f.write("""The Routing Research Group (RRG) is chartered to explore routing and addressing problems that are important to the development of the Internet but are not yet mature enough for engineering work within the IETF. As the Internet continues to evolve, the challenges in providing a scalable and robust global routing system will also change over time. At the moment, the Internet routing and addressing architecture is facing challenges in scalability, mobility, multi-homing, and inter-domain traffic engineering. Thus the RRG proposes to focus its effort on designing an alternate architecture to meet these challenges. Although Internet routing is a broad and active research area, a focused effort at this time is necessary to assure rapid progress towards reaching the goal. - -More specifically, we propose to explore architectural alternatives, including, but not limited to, separating host location and identification information. Research and experimentation in addressing and routing algorithms will be encouraged to understand whether this new direction can provide effective solutions, to work out candidate designs as necessary for a complete solution, and to fully understand both the gains and the tradeoffs that the new solutions may bring. The group will produce a list of prioritized design goals and a recommendation for a routing and addressing architecture. - -The RRG will have an open general discussion mailing list where any topic of interest to the routing research community can be discussed, and topics related to scalable routing architectures are particularly encouraged. For specific topics with widespread discussion, interested parties will be encouraged to form ad-hoc mailing lists, with summaries sent to the general mailing list quarterly. Summaries will contain the recent conclusions reached as well as the near-term agenda for future progress. - -It is commonly recognized that productive design efforts can be carried out by small and focused design teams. The RRG encourages the formation of focused design teams to explore specific design choices. As with ad-hoc mailing lists, individual design teams are required to report back quarterly to the RRG with their progress and remaining open issues. Each design team is expected to produce a set of Internet Drafts that documents their current thinking. - -The RRG, as a whole, will hold open meetings from time to time to solicit input from, and supply information to, the broader community. In particular, at least once per year there will be a review of the group's activities held at an IETF meeting. More frequent meetings will be held if it will speed group progress. Ad-hoc and design team meetings are strongly encouraged. - -The output of the group will consist of Informational and Experimental RFCs as well as Journal Articles on the topics covered by the subgroups.""") - - - -def fix_cicm_state(apps, schema_editor): - Group = apps.get_model("group", "Group") - Group.objects.filter(acronym="cicm").update(state="bof-conc") - -def noop(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0010_auto_20150930_0251'), - ('group', '0008_auto_20160505_0523'), - ('community', '0004_cleanup_data'), - ] - - operations = [ - migrations.RunPython(rename_x3s3dot3_forwards, rename_x3s3dot3_backwards), - migrations.RunPython(fix_empty_rrg_charter, noop), - migrations.RunPython(get_rid_of_empty_charters, noop), - migrations.RunPython(fix_cicm_state, noop), - ] diff --git a/ietf/group/migrations/0010_iab_programs.py b/ietf/group/migrations/0010_iab_programs.py deleted file mode 100644 index 339d08827..000000000 --- a/ietf/group/migrations/0010_iab_programs.py +++ /dev/null @@ -1,689 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import re - -from django.db import migrations - -def get_email(person): - e = person.email_set.filter(primary=True).first() - if not e: - e = person.email_set.filter(active=True).order_by("-time").first() - return e - -def add_group_community_lists(apps, schema_editor, group): - DocAlias = apps.get_model("doc", "DocAlias") - State = apps.get_model("doc", "State") - CommunityList = apps.get_model("community", "CommunityList") - SearchRule = apps.get_model("community", "SearchRule") - - active_state = State.objects.get(slug="active", type="draft") - rfc_state = State.objects.get(slug="rfc", type="draft") - - draft_aliases = DocAlias.objects.filter(name__startswith="draft") - - clist = CommunityList.objects.create(group=group) - SearchRule.objects.create(community_list=clist, rule_type="group", group=group, state=active_state) - SearchRule.objects.create(community_list=clist, rule_type="group_rfc", group=group, state=rfc_state) - r = SearchRule.objects.create(community_list=clist, rule_type="name_contains", text=r"^draft-[^-]+-%s-" % group.acronym, state=active_state) - name_re = re.compile(r.text) - r.name_contains_index = [ a.document_id for a in draft_aliases if name_re.match(a.name) ] - -def addPrograms(apps, schema_editor): - - Group = apps.get_model('group','Group') - Person = apps.get_model('person','Person') - Email = apps.get_model('person','Email') - - for name,email in [ ('Francis Bond','bond@ieee.org'), - ('Christine Runnegar', 'runnegar@isoc.org'), - ('Sarmad Hussain', 'sarmad.hussain@icann.org'), - ]: - if not Person.objects.filter(name=name).exists(): - p = Person.objects.create(name=name,ascii=name) - p.email_set.create(address=email, primary=True, active=True) - - override_find_person = { - 'Patrik Faltstrom' : 'paf@netnod.se', - 'Yoshiro Yoneya' : 'yone@jprs.co.jp', - } - - iab = Group.objects.get(acronym='iab') - - def build_group(acronym, name, description, lead, members, docs): - - if Group.objects.filter(acronym=acronym).exists(): - print "Warning - not creating %s: group already exists"%(acronym,) - return - - g = Group.objects.create(acronym=acronym, - name=name, - state_id='active', - type_id='program', - parent = iab, - description=description, - ) - - add_group_community_lists(apps, schema_editor, g) - cl = g.communitylist_set.first() - for doc in docs: - cl.added_docs.add(doc) - - lead_person = Person.objects.get(name=lead) - g.role_set.create(person=lead_person,name_id='lead',email=get_email(lead_person)) - for name in members: - if name in override_find_person: - p = Email.objects.get(address=override_find_person[name]).person - else: - p_qs = Person.objects.filter(name=name) - if p_qs.count() == 0: - print "Warning: Couldn't find %s - not adding them to %s"%(name,g.acronym) - continue - elif p_qs.count() > 1: - print "Warning: Found more than one %s - using the first one"%(name,) - p = p_qs.first() - g.role_set.create(person=p,name_id='member',email=get_email(p)) - - build_group(acronym='stackevo', - name='IP Stack Evolution', - description=""" -The IP Stack Evolution program covers various topics in the evolution of IPv4 and IPv6, the transport protocols running over IP, and the overall protocol stack architecture. The program addresses challenges that affect the stack in some way and where the IETF community requires architectural guidance, responding to community requests as well as actively monitoring work within IETF WGs which touch on relevant topics. - -There is an observed trend of functionality moving “up the stack”: where the “waist” was once IP, now most applications run over TCP/IP, or even HTTP/TCP/IP; the stack has become increasingly ossified. This is in response both to reduced path transparency within the Internet — middleboxes that limit the protocols of the traffic that can pass through them — as well as insufficiently flexible interfaces for platform and application developers. The emergence of both new application requirements demanding more flexibility from the stack, especially at layer 4, as well as the increasing ubiquity of encryption to protect against pervasive surveillance, provides an opportunity to re-evaluate and reverse this trend. - -This program aims to provide architectural guidance, and a point of coordination for work at the architectural level to improve the present situation of ossification in the Internet protocol stack. Where a working group relevant to a particular aspect of IP stack evolution exists, the program will facilitate cross-group and cross-area coordination. The program also produces documents on the IAB stream providing general guidance on and covering architectural aspects of stack evolution. - -Current Active Work -------------------- - -(1) Discussion of principles for making new protocols within the IP stack deployable, following in part on RFC 5218 “What Makes for a Successful Protocol”. - -(2) Discussion of principles for the use of encapsulation at various layers within the protocol stack. UDP-based encapsulations are not only useful for evolution above the IP layer, but in many tunneling contexts as well. The probable commonalities among all these applications of encapsulation might be useful in simplifying their implementation, deployment, and use. - -(3) Architectural guidance on the interoperability of protocol stacks for use in constrained devices, focusing on issues related to mutually incompatible interactions among application, transport, network, and link layer protocols. - -Past Workshops, BoFs, etc. --------------------------- - -The Program has organized several workshops, Birds of a Feather sessions, and proposed Research Groups on topics related to its areas of work: - -* The IAB workshop on `Stack Evolution in a Middlebox`__ Internet (SEMI) in Zurich, January 2015. Read the Workshop Report, RFC 7663 -* The `Substrate Protocol for User Datagrams`__ (SPUD) BoF at IETF 92 in Dallas, March 2015. -* The `Managing Radio Networks in an Encrypted World`__ (MaRNEW) Workshop in Atlanta, September 2015, together with GSMA. -* The Measurement and Analysis for Protocols (MAP) proposed Research Group has been meeting since IETF 93 in Prague (until IETF 94 in Yokohama as “How Ossified is the Protocol Stack?” (HOPS) proposed RG). Discussion is at . - -__ https://www.iab.org/activities/workshops/semi/ -__ https://www.ietf.org/proceedings/92/spud.html -__ https://www.iab.org/activities/workshops/marnew/ - -Documents Published -------------------- - -* `Technical Considerations for Internet Service Blocking and Filtering`__ (RFC 7754), - -__ http://www.rfc-editor.org/rfc/rfc7754.txt - -This program has itself evolved from the IP Evolution Program, which looked at general architectural issues in the evolution of IPv4 and IPv6 and the overall protocol stack architecture, and produced the following documents: - -* `IAB Thoughts on IPv6 Network Address Translation`__ (RFC 5902) -* `Evolution of the IP Model`__ (RFC 6250) -* `Smart Objects Workshop Report`__ (RFC 6574) -* `Architectural Considerations of IP Anycast`__ (RFC 7094) -* `Report from the IAB Workshop on Internet Technology Adoption and Transition (ITAT)`__ (RFC 7305) - -__ http://www.rfc-editor.org/rfc/rfc5902.txt -__ http://www.rfc-editor.org/rfc/rfc6250.txt -__ http://www.rfc-editor.org/rfc/rfc6574.txt -__ http://www.rfc-editor.org/rfc/rfc7094.txt -__ http://www.rfc-editor.org/rfc/rfc7305.txt - -""", - lead="Brian Trammell", - members= ['Brian Trammell', - 'Ralph Droms', - 'Ted Hardie', - 'Joe Hildebrand', - 'Lee Howard', - 'Erik Nordmark', - 'Robert Sparks', - 'Dave Thaler', - 'Mary Barnes', - 'Marc Blanchet', - 'David L. Black', - 'Spencer Dawkins', - 'Lars Eggert', - 'Aaron Falk', - 'Janardhan Iyengar', - 'Suresh Krishnan', - u'Mirja K\xfchlewind', - 'Eliot Lear', - 'Eric Rescorla', - 'Natasha Rooney', - 'Martin Stiemerling', - 'Michael Welzl', - ], - docs = [ 'draft-iab-protocol-transitions', - 'rfc7754', - ], - ) - - build_group(acronym='rfcedprog', - name='RFC Editor', - description=""" -The purpose of this program is to provide a focus for the IAB’s responsibility to manage the RFC Editor function, including the RSE. - -The details of the RSE function, and the RSOC are document in RFC 6635. - -The Program’s main focus is on: - -* Oversight of the RFC Series -* Assisting the RSE in policy matters as needed -* Oversight of the RSE - -The active membership of this program consists of the RFC Series Oversight Committee (RSOC), which is primarily charged with executing the IAB responsibility to oversee the RSE. - -`Past RSOC members and chairs are listed here.`__ - -__ http://www.iab.org/activities/programs/rfc-editor-program/past-rsoc-members/ - -The `RSOC Proceedures are available online here.`__ - -__ http://www.iab.org/activities/programs/rfc-editor-program/rsoc-procedures/ - -Mailing lists -------------- - -Public discussion: rsoc@ietf.org - -Meeting Minutes ---------------- - -RSOC meeting minutes are `available to the public here`__. - -__ https://www.iab.org/documents/rsocmins/ - -""", - lead="Robert Sparks", - members= ['Joe Hildebrand', - 'Robert Sparks', - 'Sarah Banks', - 'Nevil Brownlee', - 'Heather Flanagan', - 'Joel M. Halpern', - 'Tony Hansen', - 'Robert M. Hinden', - 'Ray Pelletier', - 'Adam Roach', - ], - docs = ['draft-iab-rfc5741bis', - 'draft-iab-html-rfc', - 'draft-iab-rfc-css', - 'draft-iab-rfc-framework', - 'draft-iab-rfc-nonascii', - 'draft-iab-rfc-plaintext', - 'draft-iab-rfc-use-of-pdf', - 'draft-iab-rfcv3-preptool', - 'draft-iab-svg-rfc', - 'draft-iab-xml2rfc', - 'draft-iab-styleguide', - 'draft-iab-rfcformatreq', - ], - ) - - build_group(acronym='privsec', - name='Privacy and Security', - description=""" -The IAB Privacy and Security Program is a successor to its previous Security and Privacy programs. It provides a forum to develop, synthesize and promote security and privacy guidance within the Internet technical standards community. While security and privacy have each been explicitly and implicitly considered during the design of Internet protocols, there are three major challenges which face the community: - -* most Internet protocols are developed as building blocks and will be used in a variety of situations. This means that the security and privacy protections each protocol provides may depend on adjacent protocols and substrates. The resulting security and privacy protections depend, however, on the initial assumptions remaining true as adjacent systems change. These assumptions and dependencies are commonly undocumented and may be ill-understood. -* many security approaches have presumed that attackers have resources on par with those available to those secure the system. Pervasive monitoring, distributed networks of compromised machines, and the availability of cloud compute each challenge those assumptions. -* many systems breach the confidentiality of individuals’ communication or request more than the minimally appropriate data from that communication in order to simplify the delivery of services or meet other requirements. When other design considerations contend with privacy considerations, privacy has historically lost. - -This program seeks to consolidate, generalize, and expand understanding of Internet-scale system design considerations for privacy and security; to raise broad awareness of the changing threat models and their impact on the properties of Internet protocols; and to champion the value of privacy to users of the Internet and, through that value, as a contributor to the network effect for the Internet. - -Public comments can be sent to privsec-discuss@iab.org. - - -Volunteers should send a statement of interest to privsec-program@iab.org, specifying which focus area or areas are of interest. - -Areas of Focus --------------- - -Confidentiality -=============== - -After helping develop initial text for the IAB’s statement on Internet Confidentiality, the group described the threat models related to surveillance, published as RFC 7624. The program is now working to describe the building blocks which may be used to mitigate pervasive surveillance and the impact of specific design patterns on information leakage. It will also develop a systems engineering description of how to build a confidential application which flows across the open Internet. - -Work products anticipated: - -* Mitigations document -* One or more design pattern documents -* Systems engineering document - -Trust -===== - -The program’s work on trust is coordinated work with the relevant IETF and IRTF working groups. Its first related work product, on cryptographic algorithm agility, was moved to the IETF for consideration as a best current practice and eventually published as BCP 201 (RFC 7696). The program is currently working on a document examining the current Web Trust model. The program also plans to document general considerations for managing protocol systems in which there are multiple sources of truth which may provide assurances related to identity, authorization, or repudiation. - -Work products anticipated: - -* Examination of the Web’s Trust model and implementation -* Considerations for designing protocols with multiple sources of truth. - -""", - lead='Ted Hardie', - members=[ - 'Ted Hardie', - 'Russ Housley', - 'Martin Thomson', - 'Brian Trammell', - 'Suzanne Woolf', - 'Mary Barnes', - 'Richard Barnes', - 'Alissa Cooper', - 'Stephen Farrell', - 'Joseph Lorenzo Hall', - 'Christian Huitema', - 'Eliot Lear', - 'Xing Li', - 'Lucy Lynch', - 'Karen O\'Donoghue', - 'Andrei Robachevsky', - 'Christine Runnegar', - 'Wendy Seltzer', - 'Juan-Carlos Z\xfa\xf1iga', - ], - docs = [ 'draft-iab-privsec-confidentiality-mitigations', ] - ) - - build_group(acronym='inip', - name='Names and Identifiers', - description=""" -The Names and Identifiers Program covers various topics concerning naming and resolution. As RFC 6055 points out, the DNS is not the only way that naming and resolution happens. Identifiers — not just domain names, but all identifiers — and the resolution of them are important both to users and applications on the Internet. Further, as Internet infrastructure becomes more complex and ubiquitous, the need for powerful, flexible systems of identifiers gets more important. However, in many ways we’re limited by the success of the DNS: it’s used so widely and successfully, for so many things, that compatibility with it is essential, even as demands grow for namespace characteristics and protocol behavior that aren’t included in the DNS and may be fundamentally incompatible with it. - -The IAB has worked on these issues before, but there are several things that have recently changed which make the topic worth revisiting. First, we’re pushing the limits of flexibility in the DNS in new ways: there are growing numbers of protocols and applications (some of them built outside the IETF) that are creating DNS-like naming systems, but that differ from naming rules, wire protocol, or operational restrictions implicit in DNS. We’ve particularly seen cases where these protocols and applications expect to be able to use “domain name slots” where domain names have traditionally appeared in protocols, and the potential for subtle incompatibilities among them provides an opportunity for various forms of surprising results, from unexpected comparison failures to name collisions. In addition, it may be that as a consequence of the vast expansion of the root zone, the intended hierarchical structure of the DNS namespace could be lost, which raises not only operational concerns but also architectural questions of what characteristics are necessary in naming systems for various uses. - -At the same time as that is changing, pressures to provide facilities not previously imagined for the DNS (such as bidirectional aliasing, or better protection for privacy, or context information such as localization or administrative boundaries) require that naming systems for the internet will continue to evolve. - -Beyond specific stresses provided by the practical need for compatibility with DNS and its limitations, there are questions about the implications of identifier resolution more widely. For example, various methods for treating different domain names as “the same” have implications for email addresses, and this might have implications for identifier use and comparison more generally, including for i18n. Perhaps more broadly yet, we see an impact on naming systems as we examine needs such as support for scaling in new environments (mobile, IoT) and new priorities such as supporting widespread encryption. - -The program seeks to provide a useful framework for thinking about naming and resolution issues for the internet in general, and to deliver recommendations for future naming or resolution systems. - -The scope of initial investigations is deliberately somewhat open, but could include: - -(a) some basic terminology: what do we mean by “names,” “identifiers,” and “name resolution” in the internet? What attributes of naming systems and identifiers are important with regards to comparison, search, human accessibility, and other interactions? -(b) overview: where are naming protocols and infrastructure important to the work of the IETF (and perhaps elsewhere)? Where is the DNS being used (and perhaps stretched too far)? What other identifier systems are we coming up with, and how well are those efforts working? This area will include examination of some of the naming systems under development or in use elsewhere, such as NDN, as a way of informing our thinking. -(c) For protocols (inside the IETF or outside), what should protocol designers know about re-using existing naming systems or inventing their own? Are there guidelines we can usefully provide? - -Mailing Lists -------------- - -* Program List: inip@iab.org -* Public Discussion List: inip-discuss@iab.org - -""", - lead='Suzanne Woolf', - members=[ - 'Suzanne Woolf', - 'Marc Blanchet', - 'Ralph Droms', - 'Ted Hardie', - 'Joe Hildebrand', - 'Erik Nordmark', - 'Robert Sparks', - 'Andrew Sullivan', - 'Dave Thaler', - 'Brian Trammell', - 'Edward Lewis', - 'Jon Peterson', - 'Wendy Seltzer', - 'Lixia Zhang', - ], - docs = [ 'draft-lewis-domain-names', ], - ) - - build_group(acronym='i18n-program', - name='Internationalization', - description=""" -Internationalization and Localization are two common aspects of user-facing systems which span locales. Efforts in these two areas typically handle how to appropriately represent data in a specific context and how to carry it between contexts. This program currently focuses on a special case of this problem: the set of systems which have no locale and how they interact with systems which rely on that context. Work in this area involves complex tradeoffs along multiple dimensions, and there is rarely a single right answer. Rather than attempting to force such an answer to emerge, the IAB will describe the problem, common patterns to analyse the trade-offs, and provide advice for managing specific instances of this issue. - -This program will also maintain the IAB’s long term effort to maintain liaisons with relevant groups in this topic area. Among these are the Unicode Consortium, ICANN, and ISO/IEC JTC1 SC2. - -Current work ------------- - -A number of Internet protocols and systems rely on matching a known item for operation; when these lack access to locale or the facilities to process locale, they may fail or produce surprising results in the presence of multiple character composition methods. User names, passwords, and domain labels can each present this problem. One of the most pressing issues for the general problem space noted above is resolving how internationalized names stored in the domain name system can be understood without a locale or similar context. - -Internationalized names are currently stored in an ASCII-compatible encoding derived from the Unicode Standard. That standard, however, includes certain characters which are visually identical but may be composed in multiple ways, the choice of which is locale-specific. This creates an uncertainty in how a specific DNS label might be understood by other systems which rely on the DNS. This issue is not limited to the DNS, but also occurs in other systems where a known-item match is expected; username and password matching are examples. As originally described in the `related IAB statement`__, this topic is currently blocking specific updates and is the program’s current priority. - -__ https://www.iab.org/documents/correspondence-reports-documents/2015-2/iab-statement-on-identifiers-and-unicode-7-0-0/ - -Mailing list: -------------- - -Public discussion: i18n-discuss@iab.org - -Past IAB Actions on I18N ------------------------- - -* Weider, C., Preston, C., Simonsen, K., Alvestrand, H., Atkinson, R., Crispin, M., and P. Svanberg, “The Report of the IAB Character Set Workshop held 29 February – 1 March, 1996″, `RFC 2130`__, April 1997. -* IAB and L. Daigle, Ed., “A Tangled Web: Issues of I18N, Domain Names, and the Other Internet protocols”, `RFC 2825`__, May 2000. -* IAB Response__ to Verisign GRS IDN Announcement, January 2003. -* IAB to ICANN – IAB comments__ on ICANN IDN Guidelines, 14 October 2005. -* IAB response__ to the Unicode Technical Consortium re:”Procedural Issues with the Liaison on Nextsteps”, 16 June 2006. -* Klensin, J., Faltstrom, P., Karp, C., and IAB, “Review and Recommendations for Internationalized Domain Names (IDNs)”, `RFC 4690`__, September 2006. -* IAB `liaison statement`__ to ITU-T SG17 on the Review and Recommendations for Internationalized Domain Names, 2 October 2006. -* IAB Technical Plenary on Internationalization at IETF 68 (minutes__), 22 March 2007. -* IAB Technical Plenary on Internationalization at IETF 76 (minutes__), 12 November 2009. -* Techchat on IDNA2008, Unicode, and UTR 46 (minutes__), 7 April 2010. -* IAB response__ to the IDNA appeal from JFC Morfin, 20 August 2010. -* Thaler, D., Klensin, J., and S. Cheshire, “IAB Thoughts on Encodings for Internationalized Domain Names”, `RFC 6055`__, February 2011. -* IAB Statement__ on “The interpretation of rules in the ICANN gTLD Applicant Guidebook,” 8 February 2012. -* Sullivan, A., Thaler, D., Klensin, J., and O. Kolkman, “Principles for Unicode Code Point Inclusion in Labels in the DNS”, `RFC 6912`__, April 2013. -* IAB `Statement on Identifiers and Unicode 7.0.0`__, 11 February 2015 - -__ https://datatracker.ietf.org/doc/rfc2130 -__ https://datatracker.ietf.org/doc/rfc2825 -__ http://iab.org/documents/docs/icann-vgrs-response.html -__ http://iab.org/documents/correspondence/2005-10-14-idn-guidelines.html -__ http://iab.org/documents/correspondence/2006-06-16-response-to-idn-liaison-issues.html -__ https://datatracker.ietf.org/doc/rfc4690 -__ http://iab.org/documents/correspondence/2006-10-02-idn-to-sg17.html -__ http://www.ietf.org/proceedings/68/plenaryt.html -__ http://www.ietf.org/proceedings/76/plenaryt.html -__ http://www.ietf.org/proceedings/76/plenaryt.html -__ http://www.iab.org/appeals/2010-08-20-morfin-response.pdf -__ http://datatracker.ietf.org/doc/rfc6055 -__ http://www.iab.org/documents/correspondence-reports-documents/2012-2/iab-statement-the-interpretation-of-rules-in-the-icann-gtld-applicant-guidebook/ -__ http://datatracker.ietf.org/doc/rfc6912 -__ https://www.iab.org/2015/01/27/iab-posts-statement-on-identifiers-and-unicode-7-0-0/ - -""", - lead='Ted Hardie', - members=[ - 'Ted Hardie', - 'Joe Hildebrand', - 'Andrew Sullivan', - 'Dave Thaler', - 'Marc Blanchet', - 'Francis Bond', - 'Stuart Cheshire', - 'Patrik Faltstrom', - 'Heather Flanagan', - 'Sarmad Hussain', - 'Dr. John C. Klensin', - 'Olaf Kolkman', - 'Barry Leiba', - 'Xing Li', - 'Pete Resnick', - 'Peter Saint-Andre', - 'Yoshiro Yoneya', - ], - docs= [], - ) - - build_group(acronym='iproc', - name='IETF Protocol Registries Oversight', - description=""" -The IETF Protocol Registries Oversight Committee (IPROC) is an IAB program, as well as subcommittee of the IETF Administrative Oversight Committee (IAOC). - -The primary focus of the IPROC is oversight of operations related to processing IETF protocol parameter requests. In addition, the IPROC reviews the service level agreement (SLA) between the IETF and ICANN, which is typically updated each year to reflect current expectations. - -The IPROC advises the IAB and the IAOC. The IAB is responsible for IANA oversight with respect to the protocol parameter registries. The IAOC is ultimately responsible for the fiscal and administrative support for the IANA protocol parameter registries. - -The IPROC is focused on operations of the protocol parameter registries, not all of the IANA-related activities for the global Internet. For more information on IAB activities related to broader IANA topics, please see the IANA Evolution Program. - -Work Items ----------- - -The IPROC routinely does the following: - -1. Provides review and recommendations related to the annual updates to the SLA between the IETF and ICANN; -2. Oversees and reviews deliverables described in the annual SLA; -3. Reviews operational issues related to processing protocol parameter requests, IESG designated experts, and tools development; and -4. Responds to specific developments and information requests. - -""", - lead='Russ Housley', - members=[ - 'Jari Arkko', - 'Russ Housley', - 'Andrew Sullivan', - 'Bernard Aboba', - 'Michelle S. Cotton', - 'Leslie Daigle', - 'Elise P. Gerich', - 'Ray Pelletier', - 'Jonne Soininen', - ], - docs=[], - ) - - build_group(acronym='iana-evolution', - name='IANA Evolution', - description=""" -The IANA evolution program’s primary focus is the stewardship over the IANA functions for the Internet in General and the IETF in particular. - -Its main focus is on: - -* the contractual relations between the US DoC and ICANN and the globalization__ thereof; -* the IANA MoU (RFC2860) and related agreements between stakeholders; -* the development of a vision with respect to the future of the IANA functions; and -* implementation and interpretation of the above. - -__ http://www.ntia.doc.gov/press-release/2014/ntia-announces-intent-transition-key-internet-domain-name-functions - -The program acts also as a think-tank and advises the IAB on strategic and liaison issues. - -In some cases this group may provide guidance and insight on matters relating ICANN in general. - -The group is not responsible for daily operational guidance, such as review of the SLA between the IETF and ICANN. Those responsibilities are delegated to the `IETF Protocol Registries Oversight Committee (IPROC)`__. - -__ http://www.ietf.org/iana/iproc.html - -Work Items ----------- - -The group focuses on the following high-level work items and responsibilities: - -* Identifying the desired strategic direction for the relationship of IETF, the IANA function, and other parties. -* Tracking the developments surrounding the DoC IANA function contract and its globalization -* Responding to specific developments and information requests on this topic - -The group developed, maintains and advises on the implementation of the principles guiding the `Evolution on the IANA Protocol Parameter Registries`__. - -__ http://www.iab.org/documents/correspondence-reports-documents/2014-2/re-guiding-the-evolution-of-the-iana-protocol-parameter-registries/ - -Results and References ----------------------- - -* `IANA MoU`__ -* `IAB response to the IANA NOI`__ -* `Defining the Role and Function of IETF Protocol Parameter Registry Operator (RFC6220)`__ -* `ICANN-IETF Service Level Agreements`__ -* `ICANN performance evaluation`__ -* `Information on IANA performance`__ -* `IANA oversight statement by IETF Administrative Director`__ -* `RFC 7500: Principles for Operation of Internet Assigned Numbers Authority (IANA) Registries`__ -* `Comments on RDAP Operational Profile for gTLD Registries and Registrars`__ -* `Comments on the CCWG-Accountability 3rd Draft Report`__ -* `Comments on the CCWG-Accountability 2nd Draft Report`__ -* `Comments on the ICG Proposal`__ -* `Comments on the CCWG-Accountability 1st Draft Report`__ -* `Statement on the NETmundial Initiative`__ - -__ http://www.rfc-editor.org/rfc/rfc2860 -__ http://www.iab.org/documents/correspondence/2011-03-30-iab-iana-noi-response.pdf -__ http://www.rfc-editor.org/rfc/rfc6220 -__ http://iaoc.ietf.org/contracts.html -__ http://www.iab.org/2012/05/24/iab-submits-updated-icann-performance-evaluation/ -__ http://www.iana.org/about/performance/ -__ http://www.iab.org/2012/04/03/summary-of-ietf-iana-oversight-process/ -__ http://www.rfc-editor.org/rfc/rfc7500.txt -__ https://www.iab.org/documents/correspondence-reports-documents/2016-2/comments-from-the-internet-architecture-board-iab-on-registration-data-access-protocol-rdap-operational-profile-for-gtld-registries-and-registrars/ -__ https://www.iab.org/documents/correspondence-reports-documents/2015-2/iab-comments-on-the-ccwg-accountability-3d-draft-report/ -__ https://www.iab.org/documents/correspondence-reports-documents/2015-2/iab-comments-on-ccwg-accountability/ -__ https://www.iab.org/documents/correspondence-reports-documents/2015-2/iab-comments-on-icg-proposal/ -__ https://www.iab.org/documents/correspondence-reports-documents/2015-2/iab-comments-on-ccwg-accountability-draft-report/ -__ https://www.iab.org/documents/correspondence-reports-documents/2014-2/iab-statement-on-the-netmundial-initiative/ - -Related material: - - `Press Announcement: Internet Technical Leaders Welcome IANA Globalization Progress`__ - -__ https://www.iab.org/2014/03/15/internet-technical-leaders-welcome-iana-globalization-progress/ - - -""", - lead='Russ Housley', - members=[ - 'Jari Arkko', - 'Marc Blanchet', - 'Ted Hardie', - 'Russ Housley', - 'Andrew Sullivan', - 'Suzanne Woolf', - 'Bernard Aboba', - 'Kathy Brown', - 'Alissa Cooper', - 'Leslie Daigle', - 'Dr. John C. Klensin', - 'Olaf Kolkman', - 'Eliot Lear', - 'Barry Leiba', - 'Dr. Thomas Narten', - 'Andrei Robachevsky', - 'Jonne Soininen', - 'Lynn St.Amour', - ], - docs=[ 'draft-iab-aina-mou', 'draft-iab-iana-principles' ], - ) - - build_group(acronym='plenary-planning', - name='Plenary Planning', - description=""" -The Plenary Planning Program seeks out topics for IETF Technical Plenary meetings. Typically, a Tech Plenary will feature one to three speakers on a topic that is of interest to at least several IETF Areas, and informs our work. The Program is always looking for interesting speakers, and suggestions are always welcome at tech-plenary@iab.org. - -Program Description -------------------- - -The Plenary Planning Program will identify informative and entertaining programs for the Tech Plenary at each IETF meeting. Potential presenters will normally be invited to give a Tech Chat to the IAB, as a way to familiarize the IAB with their work and presentation style. - -Ideas for potential presenters may come from anywhere, but should be topical, informative, and relate to multiple areas of IETF work. -""", - lead = 'Lee Howard', - members=[ - 'Lee Howard', - 'Lars Eggert', - 'Brian Trammell', - 'Suzanne Woolf', - 'Dirk Kutscher', - 'Allison Mankin', - 'Greg Wood', - ], - docs=[], - ) - - build_group(acronym='liaison-oversight', - name = 'Liaison Oversight', - description=""" -The IETF is best served if developments in other SDOs that may overlap, or conflict with, work in the IETF are noticed early and the leadership can make informed decisions about appropriate actions to further the IETF work in the context of developments within other SDOs. Equally, if work is being proposed in the IETF that may overlap with work in other SDOs, recognition and consideration of this by the IESG and IAB is necessary. - -The Liaison Oversight Program focuses on the liaison relationships between the IETF and other SDOs, as well as IETF documents and processes relating to those liaison relationships. As with other Programs, the Liaison Oversight Program develops recommendations for consideration by the IAB, and the IAB retains its oversight responsibilities under RFC 2850. - -Program Description -------------------- - -The Liaison Oversight Program: -============================== - -* Organizes reviews of the liaison relationships with specific SDOs; -* Develops the framework for IAB management of liaison relationships; -* Assists in the recruitment of liaison managers; -* Reviews the requirements for IT systems relating to the handling of liaison statements; -* Reviews the operational experience with documents relating to liaison management and recommends changes, where appropriate. Relevant documents include (but are not limited to) RFC 4052, 4053 and 4691. -* Reviews the state of internal and external communication as well as conformance to transparency requirements; -* Prepares specific recommendations at the request of the IAB. - -The framework for IAB management of liaison relationships includes: -=================================================================== - -* Development of processes, procedures and guidelines for liaison management; -* Coordination of the handling of liaisons within the IETF/IAB; -* Development of mechanisms to prevent inadvertent duplication of effort between the IETF and other SDOs without obstructing organizations from pursuing their own mandates; -* Development of authoritative summaries of one organization’s dependencies on the other’s work. - -Interaction with other Programs -------------------------------- - -The Liaison Oversight Program does not handle the liaison tasks itself; this function is performed by the liaison manager. However, the Liaison Oversight Program may develop recommendations relating to the relationship with specific SDOs, in cooperation with the IAB liaison shepherd and the liaison manager. The Liaison Oversight Program also may provide consistent information to the IAB regarding the relationship with other SDOs (e.g. periodic reports), and may make recommendations to the IAB. - -In cases where the level of interaction or its intensity are high a separate effort will be created to handle this. At the time of writing, there is a program dedicated to ITU-T topics, – ITU-T Coordination Program. In addition, the relationships with Unicode and ISO/IEC JTC1 SC2 are covered by the Internationalization Program, and the relationship with the W3C is covered by the HTTP/Web Evolution Initiative. - -References ----------- - -* “Liaisons to National, Multi-National or Regional Organizations”, http://iab.org/documents/docs/2003-06-10-national-liaisons.html -* “IAB Processes for Management of IETF Liaison Relationships”, `RFC 4052`__ -* “Procedures for Handling Liaison Statements to and from the IETF”, `RFC 4053`__ -* “Guidelines for Acting as an IETF Liaison to Another Organization”, `RFC 4691`__ - -__ http://www.rfc-editor.org/rfc/rfc4052 -__ http://www.rfc-editor.org/rfc/rfc4053 -__ http://www.rfc-editor.org/rfc/rfc4691 - -Other Links ------------ - - External liaison page: http://iab.org/liaisons/index.html - -""", - lead = 'Ralph Droms', - members = [ 'Ralph Droms', - 'Marc Blanchet', - 'Russ Housley', - 'Robert Sparks', - 'Suzanne Woolf', - 'Scott O. Bradner', - 'Ross Callon', - 'Adrian Farrel', - 'Dan Romascanu', - 'Gonzalo Camarillo', - 'Spencer Dawkins', - 'Eliot Lear', - 'Scott Mansfield', - 'Dr. Thomas Narten', - ], - docs=[], - ) - - -def removePrograms(apps, schema_editor): - Group = apps.get_model('group','Group') - Group.objects.filter(acronym__in=( - 'stackevo', - 'rfcedprog', - 'privsec', - 'inip', - 'i18n-program', - 'iproc', - 'iana-evolution', - 'plenary-planning', - 'liaison-oversight', - ) - ).delete() - # Intentionally not deleting the Person/Email objects that were added - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0009_auto_20150930_0758'), - ('name', '0018_iab_programs'), - ('person', '0014_auto_20160613_0751'), - ('community','0004_cleanup_data'), - ('review', '0010_auto_20161214_1537'), - ] - - operations = [ - migrations.RunPython(addPrograms,removePrograms) - ] diff --git a/ietf/group/migrations/0011_auto_20170301_0332.py b/ietf/group/migrations/0011_auto_20170301_0332.py deleted file mode 100644 index 4a2bf043c..000000000 --- a/ietf/group/migrations/0011_auto_20170301_0332.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-01 03:32 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0010_iab_programs'), - ] - - operations = [ - migrations.AlterModelOptions( - name='role', - options={'ordering': ['name_id']}, - ), - ] diff --git a/ietf/ipr/migrations/0001_initial.py b/ietf/ipr/migrations/0001_initial.py index 020839729..369cd2deb 100644 --- a/ietf/ipr/migrations/0001_initial.py +++ b/ietf/ipr/migrations/0001_initial.py @@ -1,320 +1,189 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models class Migration(migrations.Migration): + initial = True + dependencies = [ - ('message', '__first__'), + ('message', '0001_initial'), ('name', '0001_initial'), - ('doc', '0002_auto_20141222_1749'), ('person', '0001_initial'), + ('doc', '0001_initial'), ] operations = [ - migrations.CreateModel( - name='IprContact', - fields=[ - ('contact_id', models.AutoField(serialize=False, primary_key=True)), - ('contact_type', models.IntegerField(choices=[(1, b'Patent Holder Contact'), (2, b'IETF Participant Contact'), (3, b'Submitter Contact')])), - ('name', models.CharField(max_length=255)), - ('title', models.CharField(max_length=255, blank=True)), - ('department', models.CharField(max_length=255, blank=True)), - ('address1', models.CharField(max_length=255, blank=True)), - ('address2', models.CharField(max_length=255, blank=True)), - ('telephone', models.CharField(max_length=25, blank=True)), - ('fax', models.CharField(max_length=25, blank=True)), - ('email', models.EmailField(max_length=255)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='IprDetail', - fields=[ - ('ipr_id', models.AutoField(serialize=False, primary_key=True)), - ('title', models.CharField(max_length=255, db_column=b'document_title', blank=True)), - ('legacy_url_0', models.CharField(max_length=255, null=True, db_column=b'old_ipr_url', blank=True)), - ('legacy_url_1', models.CharField(max_length=255, null=True, db_column=b'additional_old_url1', blank=True)), - ('legacy_title_1', models.CharField(max_length=255, null=True, db_column=b'additional_old_title1', blank=True)), - ('legacy_url_2', models.CharField(max_length=255, null=True, db_column=b'additional_old_url2', blank=True)), - ('legacy_title_2', models.CharField(max_length=255, null=True, db_column=b'additional_old_title2', blank=True)), - ('legal_name', models.CharField(max_length=255, verbose_name=b'Legal Name', db_column=b'p_h_legal_name')), - ('rfc_number', models.IntegerField(null=True, editable=False, blank=True)), - ('id_document_tag', models.IntegerField(null=True, editable=False, blank=True)), - ('other_designations', models.CharField(max_length=255, blank=True)), - ('document_sections', models.TextField(max_length=255, verbose_name=b'Specific document sections covered', db_column=b'disclouser_identify', blank=True)), - ('patents', models.TextField(max_length=255, verbose_name=b'Patent Applications', db_column=b'p_applications')), - ('date_applied', models.CharField(max_length=255)), - ('country', models.CharField(max_length=255)), - ('notes', models.TextField(verbose_name=b'Additional notes', db_column=b'p_notes', blank=True)), - ('is_pending', models.IntegerField(blank=True, null=True, verbose_name=b'Unpublished Pending Patent Application', db_column=b'selecttype', choices=[(0, b'NO'), (1, b'YES'), (2, b'NO')])), - ('applies_to_all', models.IntegerField(blank=True, null=True, verbose_name=b'Applies to all IPR owned by Submitter', db_column=b'selectowned', choices=[(0, b'NO'), (1, b'YES'), (2, b'NO')])), - ('licensing_option', models.IntegerField(blank=True, null=True, choices=[(0, b''), (1, b'a) No License Required for Implementers.'), (2, b'b) Royalty-Free, Reasonable and Non-Discriminatory License to All Implementers.'), (3, b'c) Reasonable and Non-Discriminatory License to All Implementers with Possible Royalty/Fee.'), (4, b'd) Licensing Declaration to be Provided Later (implies a willingness to commit to the provisions of a), b), or c) above to all implementers; otherwise, the next option "Unwilling to Commit to the Provisions of a), b), or c) Above". - must be selected).'), (5, b'e) Unwilling to Commit to the Provisions of a), b), or c) Above.'), (6, b'f) See Text Below for Licensing Declaration.')])), - ('lic_opt_a_sub', models.IntegerField(null=True, editable=False, choices=[(0, b''), (1, b'The licensing declaration is limited solely to standards-track IETF documents.')])), - ('lic_opt_b_sub', models.IntegerField(null=True, editable=False, choices=[(0, b''), (1, b'The licensing declaration is limited solely to standards-track IETF documents.')])), - ('lic_opt_c_sub', models.IntegerField(null=True, editable=False, choices=[(0, b''), (1, b'The licensing declaration is limited solely to standards-track IETF documents.')])), - ('comments', models.TextField(verbose_name=b'Licensing Comments', blank=True)), - ('lic_checkbox', models.BooleanField(default=False, verbose_name=b'All terms and conditions has been disclosed')), - ('other_notes', models.TextField(blank=True)), - ('third_party', models.BooleanField(default=False)), - ('generic', models.BooleanField(default=False)), - ('comply', models.BooleanField(default=False)), - ('status', models.IntegerField(blank=True, null=True, choices=[(0, b'Waiting for approval'), (1, b'Approved and Posted'), (2, b'Rejected by Administrator'), (3, b'Removed by Request')])), - ('submitted_date', models.DateField(blank=True)), - ('update_notified_date', models.DateField(null=True, blank=True)), - ], - options={ - }, - bases=(models.Model,), - ), migrations.CreateModel( name='IprDisclosureBase', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('compliant', models.BooleanField(default=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('compliant', models.BooleanField(default=True, verbose_name=b'Complies to RFC3979')), ('holder_legal_name', models.CharField(max_length=255)), - ('notes', models.TextField(blank=True)), - ('other_designations', models.CharField(max_length=255, blank=True)), - ('submitter_name', models.CharField(max_length=255)), - ('submitter_email', models.EmailField(max_length=75)), + ('notes', models.TextField(blank=True, verbose_name=b'Additional notes')), + ('other_designations', models.CharField(blank=True, max_length=255, verbose_name=b'Designations for other contributions')), + ('submitter_name', models.CharField(blank=True, max_length=255)), + ('submitter_email', models.EmailField(blank=True, max_length=254)), ('time', models.DateTimeField(auto_now_add=True)), - ('title', models.CharField(max_length=255, blank=True)), + ('title', models.CharField(blank=True, max_length=255)), ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='HolderIprDisclosure', - fields=[ - ('iprdisclosurebase_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='ipr.IprDisclosureBase')), - ('ietfer_name', models.CharField(max_length=255, blank=True)), - ('ietfer_contact_email', models.EmailField(max_length=75, blank=True)), - ('ietfer_contact_info', models.TextField(blank=True)), - ('patent_info', models.TextField()), - ('has_patent_pending', models.BooleanField(default=False)), - ('holder_contact_email', models.EmailField(max_length=75)), - ('holder_contact_name', models.CharField(max_length=255)), - ('holder_contact_info', models.TextField(blank=True)), - ('licensing_comments', models.TextField(blank=True)), - ('submitter_claims_all_terms_disclosed', models.BooleanField(default=False)), - ('licensing', models.ForeignKey(to='name.IprLicenseTypeName')), - ], - options={ - }, - bases=('ipr.iprdisclosurebase',), - ), - migrations.CreateModel( - name='GenericIprDisclosure', - fields=[ - ('iprdisclosurebase_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='ipr.IprDisclosureBase')), - ('holder_contact_name', models.CharField(max_length=255)), - ('holder_contact_email', models.EmailField(max_length=75)), - ('holder_contact_info', models.TextField(blank=True)), - ('statement', models.TextField()), - ], - options={ - }, - bases=('ipr.iprdisclosurebase',), - ), - migrations.CreateModel( - name='IprDocAlias', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('rev', models.CharField(max_length=2, blank=True)), - ('doc_alias', models.ForeignKey(to='doc.DocAlias')), - ('ipr', models.ForeignKey(to='ipr.IprDetail')), - ], - options={ - 'verbose_name': 'IPR document alias', - 'verbose_name_plural': 'IPR document aliases', - }, - bases=(models.Model,), ), migrations.CreateModel( name='IprDocRel', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('sections', models.TextField(blank=True)), - ('revisions', models.CharField(max_length=16, blank=True)), + ('revisions', models.CharField(blank=True, max_length=16)), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='IprEvent', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(auto_now_add=True)), ('desc', models.TextField()), - ('response_due', models.DateTimeField(null=True, blank=True)), + ('response_due', models.DateTimeField(blank=True, null=True)), ], options={ 'ordering': ['-time', '-id'], }, - bases=(models.Model,), ), migrations.CreateModel( - name='IprNotification', + name='RelatedIpr', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('notification', models.TextField(blank=True)), - ('date_sent', models.DateField(null=True, blank=True)), - ('time_sent', models.CharField(max_length=25, blank=True)), - ('ipr', models.ForeignKey(to='ipr.IprDetail')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('relationship', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocRelationshipName')), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( - name='IprUpdate', + name='GenericIprDisclosure', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('status_to_be', models.IntegerField(null=True, blank=True)), - ('processed', models.IntegerField(null=True, blank=True)), - ('ipr', models.ForeignKey(related_name='updates', to='ipr.IprDetail')), - ('updated', models.ForeignKey(related_name='updated_by', db_column=b'updated', to='ipr.IprDetail')), + ('iprdisclosurebase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ipr.IprDisclosureBase')), + ('holder_contact_name', models.CharField(max_length=255)), + ('holder_contact_email', models.EmailField(max_length=254)), + ('holder_contact_info', models.TextField(blank=True, help_text=b'Address, phone, etc.')), + ('statement', models.TextField()), ], - options={ - }, - bases=(models.Model,), + bases=('ipr.iprdisclosurebase',), + ), + migrations.CreateModel( + name='HolderIprDisclosure', + fields=[ + ('iprdisclosurebase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ipr.IprDisclosureBase')), + ('ietfer_name', models.CharField(blank=True, max_length=255)), + ('ietfer_contact_email', models.EmailField(blank=True, max_length=254)), + ('ietfer_contact_info', models.TextField(blank=True)), + ('patent_info', models.TextField()), + ('has_patent_pending', models.BooleanField(default=False)), + ('holder_contact_email', models.EmailField(max_length=254)), + ('holder_contact_name', models.CharField(max_length=255)), + ('holder_contact_info', models.TextField(blank=True, help_text=b'Address, phone, etc.')), + ('licensing_comments', models.TextField(blank=True)), + ('submitter_claims_all_terms_disclosed', models.BooleanField(default=False)), + ('licensing', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.IprLicenseTypeName')), + ], + bases=('ipr.iprdisclosurebase',), ), migrations.CreateModel( name='LegacyMigrationIprEvent', fields=[ - ('iprevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='ipr.IprEvent')), + ('iprevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ipr.IprEvent')), ], - options={ - }, bases=('ipr.iprevent',), ), migrations.CreateModel( name='NonDocSpecificIprDisclosure', fields=[ - ('iprdisclosurebase_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='ipr.IprDisclosureBase')), + ('iprdisclosurebase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ipr.IprDisclosureBase')), ('holder_contact_name', models.CharField(max_length=255)), - ('holder_contact_email', models.EmailField(max_length=75)), - ('holder_contact_info', models.TextField(blank=True)), + ('holder_contact_email', models.EmailField(max_length=254)), + ('holder_contact_info', models.TextField(blank=True, help_text=b'Address, phone, etc.')), ('patent_info', models.TextField()), ('has_patent_pending', models.BooleanField(default=False)), ('statement', models.TextField()), ], - options={ - }, bases=('ipr.iprdisclosurebase',), ), - migrations.CreateModel( - name='RelatedIpr', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('relationship', models.ForeignKey(to='name.DocRelationshipName')), - ], - options={ - }, - bases=(models.Model,), - ), migrations.CreateModel( name='ThirdPartyIprDisclosure', fields=[ - ('iprdisclosurebase_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='ipr.IprDisclosureBase')), + ('iprdisclosurebase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ipr.IprDisclosureBase')), ('ietfer_name', models.CharField(max_length=255)), - ('ietfer_contact_email', models.EmailField(max_length=75)), - ('ietfer_contact_info', models.TextField(blank=True)), + ('ietfer_contact_email', models.EmailField(max_length=254)), + ('ietfer_contact_info', models.TextField(blank=True, help_text=b'Address, phone, etc.')), ('patent_info', models.TextField()), ('has_patent_pending', models.BooleanField(default=False)), ], - options={ - }, bases=('ipr.iprdisclosurebase',), ), migrations.AddField( model_name='relatedipr', name='source', - field=models.ForeignKey(related_name='relatedipr_source_set', to='ipr.IprDisclosureBase'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='relatedipr_source_set', to='ipr.IprDisclosureBase'), ), migrations.AddField( model_name='relatedipr', name='target', - field=models.ForeignKey(related_name='relatedipr_target_set', to='ipr.IprDisclosureBase'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='relatedipr_target_set', to='ipr.IprDisclosureBase'), ), migrations.AddField( model_name='iprevent', name='by', - field=models.ForeignKey(to='person.Person'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person'), ), migrations.AddField( model_name='iprevent', name='disclosure', - field=models.ForeignKey(to='ipr.IprDisclosureBase'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ipr.IprDisclosureBase'), ), migrations.AddField( model_name='iprevent', name='in_reply_to', - field=models.ForeignKey(related_name='irtoevents', blank=True, to='message.Message', null=True), - preserve_default=True, + field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='irtoevents', to='message.Message'), ), migrations.AddField( model_name='iprevent', name='message', - field=models.ForeignKey(related_name='msgevents', blank=True, to='message.Message', null=True), - preserve_default=True, + field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='msgevents', to='message.Message'), ), migrations.AddField( model_name='iprevent', name='type', - field=models.ForeignKey(to='name.IprEventTypeName'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.IprEventTypeName'), ), migrations.AddField( model_name='iprdocrel', name='disclosure', - field=models.ForeignKey(to='ipr.IprDisclosureBase'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ipr.IprDisclosureBase'), ), migrations.AddField( model_name='iprdocrel', name='document', - field=models.ForeignKey(to='doc.DocAlias'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.DocAlias'), ), migrations.AddField( model_name='iprdisclosurebase', name='by', - field=models.ForeignKey(to='person.Person'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person'), ), migrations.AddField( model_name='iprdisclosurebase', name='docs', - field=models.ManyToManyField(to='doc.DocAlias', through='ipr.IprDocRel'), - preserve_default=True, + field=models.ManyToManyField(through='ipr.IprDocRel', to='doc.DocAlias'), ), migrations.AddField( model_name='iprdisclosurebase', name='rel', - field=models.ManyToManyField(to='ipr.IprDisclosureBase', through='ipr.RelatedIpr'), - preserve_default=True, + field=models.ManyToManyField(through='ipr.RelatedIpr', to='ipr.IprDisclosureBase'), ), migrations.AddField( model_name='iprdisclosurebase', name='state', - field=models.ForeignKey(to='name.IprDisclosureStateName'), - preserve_default=True, - ), - migrations.AddField( - model_name='iprcontact', - name='ipr', - field=models.ForeignKey(related_name='contact', to='ipr.IprDetail'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.IprDisclosureStateName'), ), ] diff --git a/ietf/ipr/migrations/0002_remove_legacy_models.py b/ietf/ipr/migrations/0002_remove_legacy_models.py deleted file mode 100644 index 51f811f66..000000000 --- a/ietf/ipr/migrations/0002_remove_legacy_models.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipr', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='iprcontact', - name='ipr', - ), - migrations.DeleteModel( - name='IprContact', - ), - migrations.RemoveField( - model_name='iprdocalias', - name='doc_alias', - ), - migrations.RemoveField( - model_name='iprdocalias', - name='ipr', - ), - migrations.DeleteModel( - name='IprDocAlias', - ), - migrations.RemoveField( - model_name='iprnotification', - name='ipr', - ), - migrations.DeleteModel( - name='IprNotification', - ), - migrations.RemoveField( - model_name='iprupdate', - name='ipr', - ), - migrations.RemoveField( - model_name='iprupdate', - name='updated', - ), - migrations.DeleteModel( - name='IprDetail', - ), - migrations.DeleteModel( - name='IprUpdate', - ), - ] diff --git a/ietf/ipr/migrations/0003_auto_20150430_0847.py b/ietf/ipr/migrations/0003_auto_20150430_0847.py deleted file mode 100644 index 01e987e4c..000000000 --- a/ietf/ipr/migrations/0003_auto_20150430_0847.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipr', '0002_remove_legacy_models'), - ] - - operations = [ - migrations.AlterField( - model_name='genericiprdisclosure', - name='holder_contact_info', - field=models.TextField(help_text=b'Address, phone, etc.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='holderiprdisclosure', - name='holder_contact_info', - field=models.TextField(help_text=b'Address, phone, etc.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='iprdisclosurebase', - name='compliant', - field=models.BooleanField(default=True, verbose_name=b'Complies to RFC3979'), - preserve_default=True, - ), - migrations.AlterField( - model_name='iprdisclosurebase', - name='notes', - field=models.TextField(verbose_name=b'Additional notes', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='iprdisclosurebase', - name='other_designations', - field=models.CharField(max_length=255, verbose_name=b'Designations for other contributions', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='nondocspecificiprdisclosure', - name='holder_contact_info', - field=models.TextField(help_text=b'Address, phone, etc.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='thirdpartyiprdisclosure', - name='ietfer_contact_info', - field=models.TextField(help_text=b'Address, phone, etc.', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/ipr/migrations/0004_iprdocrel_document_name.py b/ietf/ipr/migrations/0004_iprdocrel_document_name.py deleted file mode 100644 index 933a8972f..000000000 --- a/ietf/ipr/migrations/0004_iprdocrel_document_name.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipr', '0003_auto_20150430_0847'), - ] - - operations = [ - migrations.AddField( - model_name='iprdocrel', - name='document_name', - field=models.CharField(default=b'', max_length=255), - preserve_default=True, - ), - ] diff --git a/ietf/ipr/migrations/0005_auto_20150930_0227.py b/ietf/ipr/migrations/0005_auto_20150930_0227.py deleted file mode 100644 index 61bfd0194..000000000 --- a/ietf/ipr/migrations/0005_auto_20150930_0227.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations -import django.db - -def fill_in_docalias_relationship_names(apps, schema_editor): - with django.db.connection.cursor() as cursor: - cursor.execute("update ipr_iprdocrel join doc_docalias on doc_docalias.id = ipr_iprdocrel.document_id set ipr_iprdocrel.document_name = doc_docalias.name;") - -def noop(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('ipr', '0004_iprdocrel_document_name'), - ] - - operations = [ - migrations.RunPython(fill_in_docalias_relationship_names, noop) - ] diff --git a/ietf/ipr/migrations/0006_auto_20150930_0235.py b/ietf/ipr/migrations/0006_auto_20150930_0235.py deleted file mode 100644 index 2fd48b013..000000000 --- a/ietf/ipr/migrations/0006_auto_20150930_0235.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipr', '0005_auto_20150930_0227'), - ] - - operations = [ - migrations.RemoveField( - model_name='iprdisclosurebase', - name='docs', - ), - migrations.RemoveField( - model_name='iprdocrel', - name='document', - ), - migrations.RenameField( - model_name='iprdocrel', - old_name='document_name', - new_name='document', - ), - ] diff --git a/ietf/ipr/migrations/0007_auto_20150930_0258.py b/ietf/ipr/migrations/0007_auto_20150930_0258.py deleted file mode 100644 index 045866ada..000000000 --- a/ietf/ipr/migrations/0007_auto_20150930_0258.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0010_auto_20150930_0251'), - ('ipr', '0006_auto_20150930_0235'), - ] - - operations = [ - migrations.AddField( - model_name='iprdisclosurebase', - name='docs', - field=models.ManyToManyField(to='doc.DocAlias', through='ipr.IprDocRel'), - preserve_default=True, - ), - migrations.AlterField( - model_name='iprdocrel', - name='document', - field=models.ForeignKey(to='doc.DocAlias'), - preserve_default=True, - ), - ] diff --git a/ietf/ipr/migrations/0008_auto_20160720_0218.py b/ietf/ipr/migrations/0008_auto_20160720_0218.py deleted file mode 100644 index fc06653de..000000000 --- a/ietf/ipr/migrations/0008_auto_20160720_0218.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipr', '0007_auto_20150930_0258'), - ] - - operations = [ - migrations.AlterField( - model_name='iprdisclosurebase', - name='submitter_email', - field=models.EmailField(max_length=75, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='iprdisclosurebase', - name='submitter_name', - field=models.CharField(max_length=255, blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/ipr/migrations/0009_auto_20161207_1046.py b/ietf/ipr/migrations/0009_auto_20161207_1046.py deleted file mode 100644 index a1f4b7b5c..000000000 --- a/ietf/ipr/migrations/0009_auto_20161207_1046.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipr', '0008_auto_20160720_0218'), - ] - - operations = [ - migrations.AlterField( - model_name='genericiprdisclosure', - name='holder_contact_email', - field=models.EmailField(max_length=254), - ), - migrations.AlterField( - model_name='holderiprdisclosure', - name='holder_contact_email', - field=models.EmailField(max_length=254), - ), - migrations.AlterField( - model_name='holderiprdisclosure', - name='ietfer_contact_email', - field=models.EmailField(max_length=254, blank=True), - ), - migrations.AlterField( - model_name='iprdisclosurebase', - name='submitter_email', - field=models.EmailField(max_length=254, blank=True), - ), - migrations.AlterField( - model_name='nondocspecificiprdisclosure', - name='holder_contact_email', - field=models.EmailField(max_length=254), - ), - migrations.AlterField( - model_name='thirdpartyiprdisclosure', - name='ietfer_contact_email', - field=models.EmailField(max_length=254), - ), - ] diff --git a/ietf/liaisons/migrations/0001_initial.py b/ietf/liaisons/migrations/0001_initial.py index 61635a020..cfba2a61f 100644 --- a/ietf/liaisons/migrations/0001_initial.py +++ b/ietf/liaisons/migrations/0001_initial.py @@ -1,45 +1,113 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models class Migration(migrations.Migration): + initial = True + dependencies = [ - ('doc', '0002_auto_20141222_1749'), + ('group', '0001_initial'), + ('name', '0001_initial'), ('person', '0001_initial'), - ('name', '0007_populate_liaison_names'), + ('doc', '0001_initial'), ] operations = [ migrations.CreateModel( name='LiaisonStatement', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('title', models.CharField(max_length=255, blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255)), + ('to_contacts', models.CharField(help_text=b'Contacts at recipient group', max_length=2000)), + ('response_contacts', models.CharField(blank=True, help_text=b'Where to send a response', max_length=255)), + ('technical_contacts', models.CharField(blank=True, help_text=b'Who to contact for clarification', max_length=255)), + ('action_holder_contacts', models.CharField(blank=True, help_text=b'Who makes sure action is completed', max_length=255)), + ('cc_contacts', models.TextField(blank=True)), + ('deadline', models.DateField(blank=True, null=True)), + ('other_identifiers', models.TextField(blank=True, null=True)), ('body', models.TextField(blank=True)), - ('deadline', models.DateField(null=True, blank=True)), - ('from_name', models.CharField(help_text=b'Name of the sender body', max_length=255)), - ('to_name', models.CharField(help_text=b'Name of the recipient body', max_length=255)), - ('to_contact', models.CharField(help_text=b'Contacts at recipient body', max_length=255, blank=True)), - ('reply_to', models.CharField(max_length=255, blank=True)), - ('response_contact', models.CharField(max_length=255, blank=True)), - ('technical_contact', models.CharField(max_length=255, blank=True)), - ('cc', models.TextField(blank=True)), - ('submitted', models.DateTimeField(null=True, blank=True)), - ('modified', models.DateTimeField(null=True, blank=True)), - ('approved', models.DateTimeField(null=True, blank=True)), - ('action_taken', models.BooleanField(default=False)), - ('attachments', models.ManyToManyField(to='doc.Document', blank=True)), - ('from_contact', models.ForeignKey(blank=True, to='person.Email', null=True)), - ('from_group', models.ForeignKey(related_name='liaisonstatement_from_set', blank=True, to='group.Group', help_text=b'Sender group, if it exists', null=True)), - ('purpose', models.ForeignKey(to='name.LiaisonStatementPurposeName')), - ('related_to', models.ForeignKey(blank=True, to='liaisons.LiaisonStatement', null=True)), - ('to_group', models.ForeignKey(related_name='liaisonstatement_to_set', blank=True, to='group.Group', help_text=b'Recipient group, if it exists', null=True)), + ], + ), + migrations.CreateModel( + name='LiaisonStatementAttachment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('removed', models.BooleanField(default=False)), + ('document', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), + ('statement', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='liaisons.LiaisonStatement')), + ], + ), + migrations.CreateModel( + name='LiaisonStatementEvent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(auto_now_add=True)), + ('desc', models.TextField()), + ('by', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('statement', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='liaisons.LiaisonStatement')), + ('type', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.LiaisonStatementEventTypeName')), ], options={ + 'ordering': ['-time', '-id'], }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='LiaisonStatementGroupContacts', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('contacts', models.CharField(blank=True, max_length=255)), + ('cc_contacts', models.CharField(blank=True, max_length=255)), + ('group', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='group.Group', unique=True)), + ], + ), + migrations.CreateModel( + name='RelatedLiaisonStatement', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('relationship', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocRelationshipName')), + ('source', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='source_of_set', to='liaisons.LiaisonStatement')), + ('target', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='target_of_set', to='liaisons.LiaisonStatement')), + ], + ), + migrations.AddField( + model_name='liaisonstatement', + name='attachments', + field=models.ManyToManyField(blank=True, through='liaisons.LiaisonStatementAttachment', to='doc.Document'), + ), + migrations.AddField( + model_name='liaisonstatement', + name='from_contact', + field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Email'), + ), + migrations.AddField( + model_name='liaisonstatement', + name='from_groups', + field=models.ManyToManyField(blank=True, related_name='liaisonstatement_from_set', to='group.Group'), + ), + migrations.AddField( + model_name='liaisonstatement', + name='purpose', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.LiaisonStatementPurposeName'), + ), + migrations.AddField( + model_name='liaisonstatement', + name='state', + field=ietf.utils.models.ForeignKey(default=b'pending', on_delete=django.db.models.deletion.CASCADE, to='name.LiaisonStatementState'), + ), + migrations.AddField( + model_name='liaisonstatement', + name='tags', + field=models.ManyToManyField(blank=True, to='name.LiaisonStatementTagName'), + ), + migrations.AddField( + model_name='liaisonstatement', + name='to_groups', + field=models.ManyToManyField(blank=True, related_name='liaisonstatement_to_set', to='group.Group'), ), ] diff --git a/ietf/liaisons/migrations/0002_schema_changes.py b/ietf/liaisons/migrations/0002_schema_changes.py deleted file mode 100644 index 81f3e6c61..000000000 --- a/ietf/liaisons/migrations/0002_schema_changes.py +++ /dev/null @@ -1,123 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0003_auto_20150304_0743'), - ('person', '0001_initial'), - ('doc', '0002_auto_20141222_1749'), - ('name', '0007_populate_liaison_names'), - ('liaisons', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='LiaisonStatementEvent', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('time', models.DateTimeField(auto_now_add=True)), - ('desc', models.TextField()), - ('by', models.ForeignKey(to='person.Person')), - ('statement', models.ForeignKey(to='liaisons.LiaisonStatement')), - ('type', models.ForeignKey(to='name.LiaisonStatementEventTypeName')), - ], - options={'ordering': ['-time', '-id']}, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LiaisonStatementGroupContacts', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('contacts', models.CharField(max_length=255,blank=True)), - ('cc_contacts', models.CharField(max_length=255,blank=True)), - ('group', models.ForeignKey(to='group.Group', unique=True)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='RelatedLiaisonStatement', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('relationship', models.ForeignKey(to='name.DocRelationshipName')), - ('source', models.ForeignKey(related_name='source_of_set', to='liaisons.LiaisonStatement')), - ('target', models.ForeignKey(related_name='target_of_set', to='liaisons.LiaisonStatement')), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.RenameField( - model_name='liaisonstatement', - old_name='cc', - new_name='cc_contacts', - ), - migrations.RenameField( - model_name='liaisonstatement', - old_name='to_contact', - new_name='to_contacts', - ), - migrations.RenameField( - model_name='liaisonstatement', - old_name='technical_contact', - new_name='technical_contacts', - ), - migrations.RenameField( - model_name='liaisonstatement', - old_name='response_contact', - new_name='response_contacts', - ), - migrations.AddField( - model_name='liaisonstatement', - name='action_holder_contacts', - field=models.CharField(help_text=b'Who makes sure action is completed', max_length=255, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='liaisonstatement', - name='from_groups', - field=models.ManyToManyField(related_name='liaisonsatement_from_set', to='group.Group', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='liaisonstatement', - name='other_identifiers', - field=models.TextField(null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='liaisonstatement', - name='state', - field=models.ForeignKey(default=b'pending', to='name.LiaisonStatementState'), - preserve_default=True, - ), - migrations.AddField( - model_name='liaisonstatement', - name='tags', - field=models.ManyToManyField(to='name.LiaisonStatementTagName', null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='liaisonstatement', - name='to_groups', - field=models.ManyToManyField(related_name='liaisonsatement_to_set', to='group.Group', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='liaisonstatement', - name='response_contacts', - field=models.CharField(help_text=b'Where to send a response', max_length=255, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='liaisonstatement', - name='technical_contacts', - field=models.CharField(help_text=b'Who to contact for clarification', max_length=255, blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/liaisons/migrations/0003_migrate_general.py b/ietf/liaisons/migrations/0003_migrate_general.py deleted file mode 100644 index 4d0e4392b..000000000 --- a/ietf/liaisons/migrations/0003_migrate_general.py +++ /dev/null @@ -1,103 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def migrate_tags(apps, schema_editor): - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - for s in LiaisonStatement.objects.filter(action_taken=True): - s.tags.add('taken') - -def migrate_state(apps, schema_editor): - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - for s in LiaisonStatement.objects.all(): - if s.approved: - s.state_id='posted' - else: - s.state_id='pending' - s.save() - -def create_events(apps, schema_editor): - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - LiaisonStatementEvent = apps.get_model("liaisons", "LiaisonStatementEvent") - Person = apps.get_model("person","Person") - system = Person.objects.get(name="(system)") - for s in LiaisonStatement.objects.all(): - if s.submitted: - event = LiaisonStatementEvent.objects.create( - type_id='submitted', - by=system, - statement=s, - desc='Statement Submitted') - event.time=s.submitted - event.save() - if s.approved: - # create posted event - event = LiaisonStatementEvent.objects.create( - type_id='posted', - by=system, - statement=s, - desc='Statement Posted') - event.time=s.approved - event.save() - - # create approved event for outgoing only - if s.approved != s.submitted: - event = LiaisonStatementEvent.objects.create( - type_id='approved', - by=system, - statement=s, - desc='Statement Approved') - event.time=s.approved - event.save() - - if s.modified and ( s.modified != s.submitted and s.modified != s.approved ): - event = LiaisonStatementEvent.objects.create( - type_id='modified', - by=system, - statement=s, - desc='Statement Modified') - event.time=s.modified - event.save() - -def migrate_relations(apps, schema_editor): - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - RelatedLiaisonStatement = apps.get_model("liaisons", "RelatedLiaisonStatement") - for liaison in LiaisonStatement.objects.filter(related_to__isnull=False): - RelatedLiaisonStatement.objects.create( - source=liaison, - target=liaison.related_to, - relationship_id='refold') - -# XXX: Now done in migrate_groups -def merge_reply_to(apps, schema_editor): - """Merge contents of reply_to field into response_contact and create comment Event""" - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - LiaisonStatementEvent = apps.get_model("liaisons", "LiaisonStatementEvent") - Person = apps.get_model("person","Person") - system = Person.objects.get(name="(system)") - for liaison in LiaisonStatement.objects.exclude(reply_to=''): - if liaison.reply_to in liaison.response_contacts: - continue - LiaisonStatementEvent.objects.create( - type_id='comment', - statement=liaison, - desc='Merged reply_to field into response_contacts\nOriginal reply_to: %s\nOriginal response_contacts: %s' % (liaison.reply_to, liaison.response_contacts), - by=system - ) - liaison.response_contacts += ',%s' % liaison.reply_to - liaison.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0002_schema_changes'), - ] - - operations = [ - migrations.RunPython(migrate_tags), - migrations.RunPython(migrate_state), - migrations.RunPython(create_events), - migrations.RunPython(migrate_relations), - #migrations.RunPython(merge_reply_to), - ] diff --git a/ietf/liaisons/migrations/0004_migrate_attachments.py b/ietf/liaisons/migrations/0004_migrate_attachments.py deleted file mode 100644 index 9852ce23d..000000000 --- a/ietf/liaisons/migrations/0004_migrate_attachments.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - -# This migration handles converting a standard Many-to-Many field to one -# with a through table - -def copy_attachments(apps, schema_editor): - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - LiaisonStatementAttachment = apps.get_model("liaisons", "LiaisonStatementAttachment") - for liaison in LiaisonStatement.objects.all(): - for doc in liaison.attachments.all(): - LiaisonStatementAttachment.objects.create( - statement=liaison, - document=doc, - removed=False) - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0003_migrate_general'), - ] - - operations = [ - migrations.CreateModel( - name='LiaisonStatementAttachment', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('removed', models.BooleanField(default=False)), - ('document', models.ForeignKey(to='doc.Document')), - ('statement', models.ForeignKey(to='liaisons.LiaisonStatement')), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.RunPython(copy_attachments), - migrations.RemoveField( - model_name='liaisonstatement', - name='attachments', - ), - migrations.AddField( - model_name='liaisonstatement', - name='attachments', - field=models.ManyToManyField(to='doc.Document', through='liaisons.LiaisonStatementAttachment', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/liaisons/migrations/0005_migrate_groups.py b/ietf/liaisons/migrations/0005_migrate_groups.py deleted file mode 100644 index f595ad164..000000000 --- a/ietf/liaisons/migrations/0005_migrate_groups.py +++ /dev/null @@ -1,792 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def create_new_groups(apps, schema_editor): - Group = apps.get_model("group","Group") - for group in NEW_GROUPS: - if group[2]: - #print "Get parent: {}".format(group[2]) - parent = Group.objects.get(acronym=group[2]) - else: - parent = None - Group.objects.create( - acronym=group[0], - name=group[1], - parent=parent, - type_id='sdo', - state_id=group[3]) - -def change_acronyms(apps, schema_editor): - '''Modify some existing groups''' - Group = apps.get_model("group","Group") - for old,new in CHANGE_ACRONYM: - group = Group.objects.get(acronym=old) - group.acronym = new - group.save() - -def set_parents(apps, schema_editor): - '''Modify some existing groups''' - Group = apps.get_model("group","Group") - for child_acronym,parent_acronym in SET_PARENT: - #print "Setting parent {}:{}".format(child_acronym,parent_acronym) - child = Group.objects.get(acronym=child_acronym) - parent = Group.objects.get(acronym=parent_acronym) - child.parent = parent - child.save() - -def reassign_groups(apps,schema_editor): - '''For Statements that have a multi to_group assignment, remove the group - assignment and populate the to_name field for conversion to multiple groups - in later function''' - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - for acronym,name in MULTI_TO_GROUPS: - for stmt in LiaisonStatement.objects.filter(to_group__acronym=acronym): - stmt.to_name=name - stmt.to_group=None - stmt.save() - -def cleanup_groups(apps, schema_editor): - Group = apps.get_model("group","Group") - for group,x in MULTI_TO_GROUPS: - Group.objects.get(acronym=group).delete() - -def copy_to_group(apps, schema_editor): - '''For this migration we are favoring the value in to_name over to_group. Based - on observation there are statements with multiple groups in the to_name but - restricted to one to_group.''' - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - Group = apps.get_model("group","Group") - for s in LiaisonStatement.objects.all(): - if s.to_name and s.to_name in TO_NAME_MAPPING: - if TO_NAME_MAPPING[s.to_name]: - got_exception = False - for acronym in TO_NAME_MAPPING[s.to_name]: - try: - s.to_groups.add(Group.objects.get(acronym=acronym)) - except Group.DoesNotExist: - print "Group Does Not Exist: {},{},{}".format(s.pk,s.to_name,acronym) - got_exception = True - if not got_exception: - s.to_name = '' - s.save() - else: - print "{}:{} empty to_group mapping".format(s.pk,s.to_name) - - elif s.to_group: - s.to_groups.add(s.to_group) - s.to_name = '' - s.save() - -def copy_from_group(apps, schema_editor): - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - Group = apps.get_model("group","Group") - for s in LiaisonStatement.objects.all(): - if s.from_name and s.from_name in FROM_NAME_MAPPING: - if FROM_NAME_MAPPING[s.from_name]: - got_exception = False - for acronym in FROM_NAME_MAPPING[s.from_name]: - try: - s.from_groups.add(Group.objects.get(acronym=acronym)) - except Group.DoesNotExist: - print "Group Does Not Exist: {}".format(acronym) - got_exception = True - if not got_exception: - s.from_name = '' - s.save() - else: - print "{}:{} empty from_group mapping".format(s.pk,s.from_name) - elif s.from_group: - s.from_groups.add(s.from_group) - s.from_name = '' - s.save() - else: - print "from_name not mapped and no from_group {}".format(s.pk) - - # set from_contact - #if s.from_contact: - # for fg in s.fromgroup_set.all(): - # fg.contact = s.from_contact - # fg.save() - -def set_default_poc(apps, schema_editor): - """Set default group POC if there is only one unique value""" - LiaisonStatementGroupContacts = apps.get_model("liaisons", "LiaisonStatementGroupContacts") - Group = apps.get_model("group", "Group") - for group in Group.objects.filter(liaisonstatement_to_set__isnull=False).distinct(): - contacts = set() - for stmt in group.liaisonstatement_to_set.all(): - if stmt.to_contacts: - contacts.add(stmt.to_contacts) - if len(contacts) == 1: - LiaisonStatementGroupContacts.objects.create(group=group,contacts=contacts.pop()) - - # do explicit mappings - for acronym,contacts in DEFAULT_POC.items(): - group = Group.objects.get(acronym=acronym) - try: - lsgc = LiaisonStatementGroupContacts.objects.get(group=group) - lsgc.contacts = contacts - lsgc.save() - except LiaisonStatementGroupContacts.DoesNotExist: - LiaisonStatementGroupContacts.objects.create(group=group,contacts=contacts) - - -def set_cc_contacts(apps, schema_editor): - """Set initial LiaisonStatementGroupContacts.cc_contacts""" - LiaisonStatementGroupContacts = apps.get_model("liaisons", "LiaisonStatementGroupContacts") - Group = apps.get_model("group", "Group") - cc_contacts = 'itu-t-liaison@iab.org' - for group in Group.objects.filter(acronym__startswith='itu'): - lsgc = group.liaisonstatementgroupcontacts_set.first() - if lsgc: - lsgc.cc_contacts = cc_contacts - lsgc.save() - else: - LiaisonStatementGroupContacts.objects.create(group=group,cc_contacts=cc_contacts) - -def explicit_mappings(apps, schema_editor): - """In some cases the to_name cannot be mapped one-to-one with a group. The - following liaison statements are modified individually - """ - #LiaisonStatementFromGroup = apps.get_model("liaisons", "LiaisonStatmentFromGroup") - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - Group = apps.get_model("group", "Group") - - def _setgroup(to=None,frm=None,pks=None): - for pk in pks: - s = LiaisonStatement.objects.get(pk=pk) - if to: - s.to_groups.add(*Group.objects.filter(acronym__in=to)) - s.to_name = '' - if frm: - #for acronym in frm: - # LiaisonStatementFromGroup.objects.create(statement=s,group=Group.objects.get(acronym=acronym)) - s.from_groups.add(*Group.objects.filter(acronym__in=frm)) - s.from_name = '' - s.save() - - _setgroup(to=['ietf'],pks=[116,782,796,797,823,835,836,837,840]) - _setgroup(to=['sipping'],pks=[809]) - _setgroup(to=['ieprep'],pks=[810]) - _setgroup(to=['atm-forum'],frm=['megaco'],pks=[816]) - _setgroup(to=['ccamp'],pks=[827,829]) - _setgroup(to=['sub','tsv'],pks=[828]) - _setgroup(to=['sigtran'],pks=[830]) - _setgroup(to=['irtf'],pks=[831,832,833,834]) - _setgroup(to=['rmt'],pks=[838,839]) - _setgroup(to=['ietf','iana'],pks=[841]) - _setgroup(to=['isoc','iana'],pks=[842]) - _setgroup(to=['ietf','avt'],pks=[811,812]) - _setgroup(to=['avt'],pks=[822]) - # 821 / 824 - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0004_migrate_attachments'), - ] - - operations = [ - migrations.RunPython(change_acronyms), - migrations.RunPython(create_new_groups), - migrations.RunPython(set_parents), - migrations.RunPython(reassign_groups), - migrations.RunPython(copy_to_group), - migrations.RunPython(copy_from_group), - migrations.RunPython(set_default_poc), - migrations.RunPython(set_cc_contacts), - migrations.RunPython(cleanup_groups), - migrations.RunPython(explicit_mappings), - ] - -# ---------------------------------------------------------- -# x_name to group mappings -# ----------------------------------------------------------- -NEW_GROUPS = [ - ('3gpp-tsgsa','SGPP TSG SA','3gpp','active'), - ('3gpp-tsgsa-sa2','3GPP TSG SA WG2','3gpp-tsgsa','active'), - ('3gpp-tsgsa-sa3','3GPP TSG SA WG3','3gpp-tsgsa','active'), - ('3gpp-tsgct','SGPP TSG CT','3gpp','active'), - ('3gpp-tsgct-ct1','3GPP TSG CT WG1','3gpp-tsgct','active'), - ('3gpp-tsgct-ct4','3GPP TSG CT WG4','3gpp-tsgct','active'), - ('3gpp-tsgran','SGPP TSG RAN','3gpp','active'), - ('3gpp-tsgran-ran2','3GPP TSG RAN WG2','3gpp-tsgran','active'), - ('3gpp-tsgt-wg2','3GPP-TSGT-WG2','3gpp','active'), - ('acif','Australian Communications Industry Forum',None,'active'), - ('arib','Association of Radio Industries and Business',None,'active'), - ('ashrae','American Society of Heating, Refrigerating, and Air-Conditioning Engineers',None,'active'), - ('atis','ATIS',None,'active'), - ('atm-forum','ATM Forum',None,'active'), - ('ccsa','China Communications Standards Association',None,'active'), - ('dlna','Digital Living Network Alliance',None,'active'), - ('dsl-forum','DSL Forum',None,'active'), - ('dsl-forum-twg','DSL Forum Architecture & Transport Working Group','dsl-forum','active'), - ('dvb-tm-ipi','DVB TM-IPI',None,'active'), - ('epcglobal','EPCGlobal',None,'active'), - ('etsi','ETSI',None,'active'), - ('etsi-at-digital','ETSI AT Digital','etsi','active'), - ('etsi-bran','ETSI BRAN','etsi','active'), - ('etsi-dect','ETSI DECT','etsi','active'), - ('etsi-emtel','ETSI EMTEL','etsi','active'), - ('etsi-tc-hf','ETSI TC HF','etsi','active'), - ('etsi-tispan','ETSI TISPAN','etsi','active'), - ('etsi-tispan-wg4','ETSI TISPAN WG4','etsi-tispan','active'), - ('etsi-tispan-wg5','ETSI TISPAN WG5','etsi-tispan','active'), - ('femto-forum','Femto Forum',None,'active'), - ('gsma','GSMA',None,'active'), - ('gsma-wlan','GSMA WLAN','gsma','active'), - ('incits-t11-5','INCITS T11.5',None,'active'), - ('isma','Internet Streaming Media Alliance',None,'active'), - ('itu','ITU',None,'active'), - ('itu-r-wp5a','ITU-R-WP5A','itu-r','active'), - ('itu-r-wp5d','ITU-R-WP5D','itu-r','active'), - ('itu-r-wp8a','ITU-R-WP8A','itu-r','active'), - ('itu-r-wp8f','ITU-R-WP8F','itu-r','active'), - ('itu-t-ipv6-group','ITU-T-IPV6-GROUP','itu-t','active'), - ('itu-t-fg-cloud','ITU-T-FG-CLOUD','itu-t','conclude'), - ('itu-t-fg-iptv','ITU-T-FG-IPTV','itu-t','conclude'), - ('itu-t-fg-ngnm','ITU-T-FG-NGNM','itu-t','conclude'), - ('itu-t-jca-idm','ITU-T-JCA-IDM','itu-t','active'), - ('itu-t-ngnmfg','ITU-T-NGNMFG','itu-t','active'), - ('itu-t-sg-4','ITU-T-SG-4','itu-t','conclude'), - ('itu-t-sg-6','ITU-T-SG-6','itu-t','conclude'), - ('itu-t-sg-7','ITU-T-SG-7','itu-t','conclude'), - ('itu-t-sg-8','ITU-T-SG-8','itu-t','conclude'), - ('itu-t-sg-9','ITU-T-SG-9','itu-t','active'), - ('itu-t-sg-2-q1','ITU-T-SG-2-Q1','itu-t-sg-2','active'), - ('itu-t-sg-11-q5','ITU-T-SG-11-Q5','itu-t-sg-11','active'), - ('itu-t-sg-11-wp2','ITU-T-SG-11-WP2','itu-t-sg-11','active'), - ('itu-t-sg-12-q12','ITU-T-SG-12-Q12','itu-t-sg-12','active'), - ('itu-t-sg-12-q17','ITU-T-SG-12-Q17','itu-t-sg-12','active'), - ('itu-t-sg-13-q3','ITU-T-SG-13-Q3','itu-t-sg-13','active'), - ('itu-t-sg-13-q5','ITU-T-SG-13-Q5','itu-t-sg-13','active'), - ('itu-t-sg-13-q7','ITU-T-SG-13-Q7','itu-t-sg-13','active'), - ('itu-t-sg-13-q9','ITU-T-SG-13-Q9','itu-t-sg-13','active'), - ('itu-t-sg-13-q11','ITU-T-SG-13-Q11','itu-t-sg-13','active'), - ('itu-t-sg-13-wp3','ITU-T-SG-13-WP3','itu-t-sg-13','conclude'), - ('itu-t-sg-13-wp4','ITU-T-SG-13-WP4','itu-t-sg-13','conclude'), - ('itu-t-sg-13-wp5','ITU-T-SG-13-WP5','itu-t-sg-13','conclude'), - ('itu-t-sg-14','ITU-T-SG-14','itu-t','active'), - ('itu-t-sg-15-q1','ITU-T-SG-15-Q1','itu-t-sg-15','active'), - ('itu-t-sg-15-q3','ITU-T-SG-15-Q3','itu-t-sg-15','active'), - ('itu-t-sg-15-q4','ITU-T-SG-15-Q4','itu-t-sg-15','active'), - ('itu-t-sg-15-q6','ITU-T-SG-15-Q6','itu-t-sg-15','active'), - ('itu-t-sg-15-q9','ITU-T-SG-15-Q9','itu-t-sg-15','active'), - ('itu-t-sg-15-q10','ITU-T-SG-15-Q10','itu-t-sg-15','active'), - ('itu-t-sg-15-q11','ITU-T-SG-15-Q11','itu-t-sg-15','active'), - ('itu-t-sg-15-q12','ITU-T-SG-15-Q12','itu-t-sg-15','active'), - ('itu-t-sg-15-q14','ITU-T-SG-15-Q14','itu-t-sg-15','active'), - ('itu-t-sg-15-q15','ITU-T-SG-15-Q15','itu-t-sg-15','active'), - ('itu-t-sg-15-wp1','ITU-T-SG-15-WP1','itu-t-sg-15','active'), - ('itu-t-sg-15-wp3','ITU-T-SG-15-WP3','itu-t-sg-15','active'), - ('itu-t-sg-16-q8','ITU-T-SG-16-Q8','itu-t-sg-16','active'), - ('itu-t-sg-16-q9','ITU-T-SG-16-Q9','itu-t-sg-16','active'), - ('itu-t-sg-16-q10','ITU-T-SG-16-Q10','itu-t-sg-16','active'), - #('itu-t-sg-17-tsb','ITU-T-SG-17-TSB','itu-t-sg-17','active'), - ('itu-t-sg-17-q2','ITU-T-SG-17-Q2','itu-t-sg-17','active'), - #('itu-t-sg-17-q4','ITU-T-SG-17-Q4','itu-t-sg-17','active'), - ('itu-t-sg-20','ITU-T-SG-20','itu-t','active'), - ('ieee','IEEE',None,'active'), - ('ieee-802','IEEE 802','ieee','active'), - ('ieee-802-ec','IEEE 802 Executive Committee','ieee','active'), - ('ieee-802-21','IEEE 802.21','ieee-802','active'), - ('ieee-sa-ngson','IEEE SA NGSON','ieee-sa','active'), - ('iso-iec-jtc1','ISO/IEC JTC1',None,'active'), - ('iso-iec-jtc1-sc29-wg1','ISO/IEC JTC1 SC29 WG1','iso-iec-jtc1-sc29','active'), - ('iso-iec-jtc1-sc31','ISO/IEC JTC1 SC31','iso-iec-jtc1','active'), - ('iso-iec-jtc1-sc31-wg4','ISO/IEC JTC1 SC31 WG4','iso-iec-jtc1-sc31','active'), - ('iso-iec-jtc1-sgsn','ISO/IEC JTC1 SGSN','iso-iec-jtc1','active'), - ('iso-iec-jtc1-wg7','ISO/IEC JTC1 WG7','iso-iec-jtc1','active'), - ('mead','IETF MEAD Team','rtg','active'), - ('mfa-forum','MFA Forum',None,'active'), - ('mpeg','MPEG',None,'active'), - ('mpls-forum','MPLS Forum',None,'active'), - ('mfa','MPLS and Frame Relay Alliance',None,'active'), - ('nanc-lnpa-wg','NANC LNPA WG',None,'active'), - ('nmnro','National, Multi-National or Regional Organizations',None,'active'), - ('oma','OMA',None,'active'), - ('oma-bcast','OMA BCAST','oma','active'), - ('oma-com-cab','OMA COM CAB','oma','active'), - ('oma-com-cpm','OMA COM CPM','oma','active'), - ('oma-mwg','OMA MWG','oma','active'), - ('oma-mwg-mem','OMA MWG-MEM','oma-mwg','active'), - ('oma-pag-wg','OMA PAG WG','oma','active'), - ('oma-tp','OMA TP','oma','active'), - ('opif','Open IPTV Forum',None,'active'), - ('t1m1','T1M1',None,'active'), - ('t1s1','T1S1',None,'active'), - ('t1x1','T1X1',None,'active'), - ('tia','TIA',None,'active'), - ('tmoc','TMOC',None,'active'), - ('w3c-geolocation-wg','W3C Geolocation WG','w3c','active'), - ('w3c-mmi','W3C MMI','w3c','active'), - ('wifi-alliance','Wifi Alliance',None,'active'), - ('wig','WIG',None,'active'), -] - -CHANGE_ACRONYM = [ - ('ieee-8021','ieee-802-1'), - ('ieee-8023','ieee-802-3'), - ('ieee-80211','ieee-802-11'), - ('ieee-80216','ieee-802-16'), - ('ieee-80223','ieee-802-23'), - ('isoiec-jtc1-sc2','iso-iec-jtc1-sc2'), - ('isoiec-jtc1-sc6','iso-iec-jtc1-sc6'), - ('isoiec-jtc1-sc29','iso-iec-jtc1-sc29'), - ('isoiec-jtc-1sc-29wg-11','iso-iec-jtc1-sc29-wg11'), - ('itu-t-fgd','itu-t-fg-dist'), - ('itu-t-sg17-q4','itu-t-sg-17-q4'), - ('itu-t-sg17-tsb','itu-t-sg-17-tsb'), - ('ITU-T-SG5','itu-t-sg-5'), - ('3GPP-TSG-SA-WG4','3gpp-tsgsa-sa4'), - ('IEEE-802-OmniRAN','ieee-802-ec-omniran'), -] - -SET_PARENT = [ - ('itu-t','itu'), - ('itu-r','itu'), - ('itu-t-jca-cloud','itu-t'), - ('itu-t-jca-cop','itu-t'), - ('itu-t-jca-sdn','itu-t'), - ('itu-t-mpls','itu-t'), - ('itu-t-sg-2','itu-t'), - ('itu-t-sg-3','itu-t'), - ('itu-t-sg-11','itu-t'), - ('itu-t-sg-12','itu-t'), - ('itu-t-sg-13','itu-t'), - ('itu-t-sg-15','itu-t'), - ('itu-t-sg-16','itu-t'), - ('itu-t-sg-17','itu-t'), - ('itu-t-tsag','itu-t'), - ('ieee-sa','ieee'), - ('ieee-802-1','ieee-802'), - ('ieee-802-3','ieee-802'), - ('ieee-802-11','ieee-802'), - ('ieee-802-16','ieee-802'), - ('ieee-802-23','ieee-802'), - ('ieee-802-ec-omniran','ieee-802-ec'), - ('iso-iec-jtc1-sc2','iso-iec-jtc1'), - ('iso-iec-jtc1-sc6','iso-iec-jtc1'), - ('iso-iec-jtc1-sc7','iso-iec-jtc1'), - ('iso-iec-jtc1-sc27','iso-iec-jtc1'), - ('iso-iec-jtc1-sc29','iso-iec-jtc1'), - ('iso-iec-jtc1-sc29-wg11','iso-iec-jtc1-sc29'), -] - -MULTI_TO_GROUPS = [ - ('itu-t-sg15-q9-q10-q12-and-q14','ITU-T SG 15 Q9, Q10, Q12 and Q14'), - ('itu-t-sg12-q-12-17','ITU-T SG 12, Q12, Q17'), -] - -TO_NAME_MAPPING = { - u'(bwijnen@lucent.com) Bert Wijnen': [u'sming'], - u'(lyong@ciena.com)Lyndon Ong': [u'itu-t-sg-15'], - #u'(sob@harvard.edu) Scott Bradner': None, # this is a bunch (explicit) - u'(sob@harvard.edu)Scott Bradner': ['irtf'], # this is 833 - u'3GPP SA WG4': [u'3gpp-tsgsa-sa4'], - u'3GPP SA2': [u'3gpp-tsgsa-sa2'], - u'3GPP TSG CT WG4': [u'3gpp-tsgct-ct4'], - u'3GPP TSG RAN WG2': [u'3gpp-tsgran-ran2'], - u'3GPP TSG SA WG4': [u'3gpp-tsgsa-sa4'], - u'3GPP, 3GPP2, ARIB, ATIS, CCSA, ETSI, ETSI-DECT, ETSI-BRAN, IEEE, IETF,': [u'ietf'], - u'3GPP/IETF and 3GPP/ITU-T Co-ordinator': ['3gpp-tsgct-ct1'], - u'ACIF, ARIB, ATIS, CCSA, ETSI, IEEE, IETF, ISACC, TIA, TTA, TTC': ['ietf'], - u'ASON-related Work': ['ccamp'], - u'ATIS': ['atis'], - u'American Society of Heating, Refrigerating, and Air-Conditioning Engineers': ['ashrae'], - u'BBF': ['broadband-forum'], - u'BMWG': [u'bmwg'], - u'Bert Wijnen and the IETF O & M Area': [u'ops'], - u'Bert Wijnen, Bernard Aboba and the IETF': [u'ietf'], - u'CCAMP WG co-chairs and IEEE-IETF': ['ccamp'], - u'CCAMP WG co-chairs and IEEE-IETF liaisons': ['ccamp'], - u'Completes action above Scott Bradner, Area co-Director (sob@harvard.edu)': ['tsv'], - u'DLNA': ['dlna'], - #u'DONE': None, # this one is explicitly mapped - u'DSL Forum': [u'dsl-forum'], - u'DSL Forum Architecture & Transport Working Group': ['dsl-forum-twg'], - u'DVB IPI': ['dvb-tm-ipi'], - u'DVB TM-IPI, ETSI TISPAN, ATIS IIF, IETF RMT, IETF FECFRAME': ['fecframe','rmt'], - u'EAP Method Update Working Group': ['emu'], - u'ETSI AT working group Digital': ['etsi-at-digital'], - u'ETSI TC HF': ['etsi-tc-hf'], - u'ETSI TISPAN': ['etsi-tispan'], - u'G.7712 Editor, ITU-T SG15Q14 Rapporteur, ITU-T SG15': ['itu-t-sg-15'], - u'Generic EAP Encapsulation': ['int'], - u'Harald Alvestrand': ['avt'], # placeholder for explicit (2) - u'IAB and IETF Routing Area Directors': [u'iab', 'rtg'], - u'IAB, IESG': [u'iab', 'iesg'], - u'IANA': [u'iana'], - u'ICANN, IETF/IAB, NRO and ACSIS': ['ietf','iab'], - u'IEEE 802': [u'ieee-802'], - u'IEEE NGSON Study Group': ['ieee-sa-ngson'], - u'IEEE802.1': [u'ieee-802-1'], - u'IESG members, IAB members': [u'iesg', u'iab'], - u'IESG, IAB, IETF MPLS WG': ['iesg','iab','mpls'], - u'IESG, IETF-RAI': [u'iesg', u'rai'], - u'IESG/IAB Chair': [u'iesg', u'iab'], - u'IETF PWE3 and TICTOC': [u'pwe3', u'tictoc'], - u'IETF (CCAMP, PCE and MPLS WGs)': [u'ccamp', u'pce', u'mpls'], - u'IETF (Management)': ['iesg'], - u'IETF (SAVI and V6OPS WGS, OPS Area and INT Area)': [u'savi', u'v6ops', u'ops', u'int'], - u'IETF (Sub-IP & Transport Areas)': [u'sub', u'tsv'], - u'IETF (and others)': [u'ietf'], - u'IETF (ccamp, pce and mpls WGs)': [u'ccamp', u'pce', u'mpls'], - u'IETF 6MAN WG, IETF Internet Area': [u'6man', u'int'], - u'IETF AVT WG, ITU-T SG11': [u'avt', u'itu-t-sg-11'], - #u'IETF CCAMP WG and Routing Area Directors': [u'ccamp', u'rtg'], - #u'IETF CCAMP WG and Sub IP Directors': [u'ccamp','sub'], - #u'IETF CCAMP WG and Sub-IP Area Directors': [u'ccamp','sub'], - u'IETF CCAMP WG, CC: IETF OSPF WG': [u'ospf','ccamp'], - u'IETF CCAMP WG, Routing Area Directors': [u'ccamp', u'rtg'], - u'IETF CCAMP and MPLS WGs': [u'ccamp', u'mpls'], - u'IETF CCAMP and MPLS WGs and the Routing Area Directors of the IETF': [u'ccamp', u'mpls', u'rtg'], - u'IETF CCAMP and PCE WGs': [u'ccamp', u'pce'], - u'IETF CCAMP, IETF Routing Area Directors': [u'ccamp', u'rtg'], - u'IETF CCAMP, PCE and MPLS WGs': [u'ccamp', u'pce', u'mpls'], - u'IETF Charter group on Authority to Citizen Alert (ATOCA)': [u'atoca'], - u'IETF DNSOP WG, SAAG, IAB': [u'dnsop', u'saag', u'iab'], - u'IETF IAB, IETF IESG': [u'iab', u'ietf', u'iesg'], - u'IETF IESG, IAB, PWE3 WG, MPLS WG, routing and internet Area Directors': [u'iesg', u'iab', u'pwe3', u'mpls', u'rtg', u'int'], - u'IETF IESG, IETF MPLS WG': [u'mpls','iesg'], - #u'IETF ISIS WG and Routing Area Directors': [u'isis','rtg'], - u'IETF IPPM, IETF AVT': [u'ippm', u'avt'], - u'IETF Internet Area; IETF MIF WG; IETF v6ops WG; IETF 6man WG; IETF softwire WG; IETF Operations and Management Area': [u'int', u'mif', u'v6ops', u'6man', u'softwire', u'ops'], - u'IETF Liaison to the ITU on MPLS and PWE3 WG Co-Chair': [u'itu-t-mpls', u'pwe3'], - u'IETF MEAD Team': [u'mead'], - u'IETF MEAD team': [u'mead'], - u'IETF MEXT WG': ['mext'], - u'IETF MIPSHOP-WG': [u'mipshop'], - u'IETF MMUSIC WG,IETF SIPPING WG': [u'sipping','mmusic'], - u'IETF MPLS & PWE3': [u'mpls', u'pwe3'], - u'IETF MPLS WG, CC: IETF CCAMP and PWE3 WGs': [u'mpls', u'ccamp', u'pwe3'], - u'IETF MPLS WG, CC: MFA Forum': ['mpls','mfa-forum'], - u'IETF MPLS WG, IAB, IESG': [u'mpls', u'iab', u'iesg'], - u'IETF MPLS WG, IETF IAB and IESG': [u'mpls', u'iab', u'iesg'], - u'IETF MPLS WG, IETF PWE3 WG, Broadband Forum': [u'mpls', u'pwe3', u'broadband-forum'], - u'IETF MPLS WG Co Chairs (Info: CCAMP WG Co Chairs, MEAD team)': [u'mpls','ccamp','mead'], - u'IETF MPLS WG Co-Chairs, CC: IETF MEAD team': [u'mpls','mead'], - u'IETF MPLS WG and OPSA WG': [u'mpls','opsawg'], - u'IETF MPLS WG and PEW3 WG': [u'mpls','pwe3'], - u'IETF MPLS WG, PWE3 WG': [u'pwe3','mpls'], - u'IETF MPLS and GMPLS': ['mpls'], - u'IETF MPLS and PWE3 WG, MFA Forum, ITU-T Q7/13': ['mpls','pwe3','mfa-forum','itu-t-sg-13-q7'], - u'IETF MPLS liaison representative': [u'mpls'], - u'IETF MPLS, CCAMP and PWE3 WGs': [u'mpls', u'ccamp', u'pwe3'], - u'IETF MPLS, CCAMP, PWE3 and L2VPN': [u'mpls', u'ccamp', u'pwe3', u'l2vpn'], - u'IETF MPLS, PWE WGs (Info: IETF MEAD team)': ['mpls','pwe3','mead'], - u'IETF Mead Team': [u'mead'], - u'IETF NSIS WG Chairs, IETF TSV Area Directors, IESG members, IAB members': [u'nsis', u'tsv', u'iesg', u'iab'], - u'IETF PWE3 and L2VPN': [u'pwe3', u'l2vpn'], - u'IETF PWE3 and L2VPN Working Groups': [u'pwe3', u'l2vpn'], - u'IETF PWE3 and MPLS WG': [u'mpls',u'pwe3'], - u'IETF PWE3 and MPLS WGs': [u'pwe3', u'mpls'], - u'IETF PWE3 and MPLS Working Groups': [u'pwe3', u'mpls'], - u'IETF PWE3, IETF L2VPN WG': ['pwe3',u'l2vpn'], - u'IETF PWE3, MPLS working groups': [u'pwe3', u'mpls'], - u'IETF RAI and IESG': [u'rai', 'iesg'], - u'IETF Real-time Applications and Infrastructure Area Director': [u'rai'], - u'IETF Routing Area, the MPLS and CCAMP working groups': [u'rtg', u'mpls', u'ccamp'], - u'IETF Routing Area (CCAMP WG) and Internet Area (L2VPN WG and L3VPN WG)': ['ccamp','l2vpn','l3vpn'], - u'IETF Routing Area Directors and IAB (CC: CCAMP WG)': ['ccamp',u'rtg','iab'], - u'IETF Routing Area Directors and IS-IS WG': ['isis'], - u'IETF Routing and Transport areas': [u'rtg', u'tsv'], - u'IETF Security Area Directors, CC: IETF CCAMP WG': [u'sec','ccamp'], - u'IETF SIP related Working Groups and IESG': ['iesg','rai'], - u'IETF Transport and Internat Areas': [u'tsv', u'int'], - u'IETF Transport Area Directors, PCN Working Group Chairs': [u'pcn'], - u'IETF WG MPLS': [u'mpls'], - u'IETF Working Groups IEPREP, TSV, NSIS': [u'ieprep', u'tsv', u'nsis'], - u'IETF and Harald Alvestrand': ['ietf'], - u'IETF and IAB': [u'ietf', u'iab'], - u'IETF avt and mmusic WG': [u'mmusic','avt'], - u'IETF ccamp and pce WG': ['ccamp',u'pce'], - u'IETF mobileip WG and mpls WG': [u'mobileip','mpls'], - u'IETF mpls WG, CC: IETF pwe3 WG': ['mpls',u'pwe3'], - u'IETF mpls and ccamp WG': ['mpls',u'ccamp'], - u'IETF pwe3 WG, CC: mpls WG': [u'mpls','pwe3'], - u'IETF pwe3, mpls WGs': [u'pwe3', u'mpls'], - u'IETF pwe3 and mpls WG': [u'mpls','pwe3'], - u'IETF re RoHC': [u'rohc'], - u'IETF \u2013 Internet Area Directors, Internet Area Working Groups': [u'int'], - u'IETF: Transport Area Directors, PCN Working Group Chairs': [u'pcn'], - u'IETF, IAB': [u'ietf', u'iab'], - u'IETF/IAB': [u'ietf', u'iab'], - u'IETF/IAB, NRO, ICANN and ACSIS': ['ietf','iab'], - u'IETF/IAB/IESG': [u'ietf', u'iab', u'iesg'], - u'IETF/PWE3 and L2VPN WGs': [u'pwe3', u'l2vpn'], - u'ISIS': [u'isis'], - u'ISMA': ['isma'], - u'ISO/IEC JTC': [u'iso-iec-jtc1'], - u'ISO/IEC JTC 1/SC 29/WG 1': [u'iso-iec-jtc1-sc29-wg1'], - u'ISOC': [u'isoc'], - u'ISOC/IAB Liaison': [u'isoc', 'iab'], - u'ITU': [u'itu'], - u'ITU IPv6 Group': [u'itu-t-ipv6-group'], - u'ITU Q12/15 and Q14/15': [u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU SG 16 Q8, 9, 10/16': [u'itu-t-sg-16-q8',u'itu-t-sg-16-q9',u'itu-t-sg-16-q10'], - u'ITU SG13': [u'itu-t-sg-13'], - u'ITU SG15': [u'itu-t-sg-15'], - u'ITU-R': [u'itu-r'], - u'ITU-R WP8F & IETF': [u'itu-r-wp8f',u'ietf'], - u'ITU-SG15': [u'itu-t-sg-15'], - u'ITU-SG2': [u'itu-t-sg-2'], - u'ITU-T JCA-IdM': [u'itu-t-jca-idm'], - u'ITU-T Q1/SG15': [u'itu-t-sg-15-q1'], - u'ITU-T Q10/15': [u'itu-t-sg-15-q10'], - u'ITU-T Q12/15 and Q14/15': [u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T Q14/15': [u'itu-t-sg-15-q14'], - u'ITU-T Q14/15 - Mr. Kam Lam, Rapporteur': [u'itu-t-sg-15-q14'], - u'ITU-T Q14/15, ITU-T Q11/15': [u'itu-t-sg-15-q11',u'itu-t-sg-15-q14'], - u'ITU-T Q3/15': [u'itu-t-sg-15-q3'], - u'ITU-T Q5/13 (recently renamed ITU-T Q7/13)': [u'itu-t-sg-13-q7'], - u'ITU-T Q7/SG13': [u'itu-t-sg-13-q7'], - u'ITU-T Question 14/15': [u'itu-t-sg-15-q14'], - u'ITU-T Question 3/15': [u'itu-t-sg-15-q3'], - u'ITU-T SG 11 and ITU-T TSAG': [u'itu-t-sg-11',u'itu-t-tsag'], - u'ITU-T SG 11, ITU-T Q.5/11, ITU-T WP 2/11': [u'itu-t-sg-11',u'itu-t-sg-11-q5',u'itu-t-sg-11-wp2'], - u'ITU-T SG 12, Q12, Q17': [u'itu-t-sg12-q-12-17'], - u'ITU-T SG 13 (ITU-T SG 11 and SG 12 for information)': [u'itu-t-sg-13',u'itu-t-sg-12',u'itu-t-sg-12'], - u'ITU-T SG 13 (ITU-T SG 11 for information)': [u'itu-t-sg-13',u'itu-t-sg-11'], - u'ITU-T SG 13, SG 15': [u'itu-t-sg-13', u'itu-t-sg-15'], - u'ITU-T SG 15 ': [u'itu-t-sg-15'], - u'ITU-T SG 15 Q9, Q10, Q12 and Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q10',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG 15, Q.14/15': [u'itu-t-sg-15-q14'], - u'ITU-T SG 15, Q9, Q11, Q12, Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q10',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG 17 Q.2/17': [u'itu-t-sg-17-q2'], - u'ITU-T SG 4': [u'itu-t-sg-4'], - u'ITU-T SG 4, 9, 11, 13, 16 and IETF': [u'itu-t-sg-4',u'itu-t-sg-9',u'itu-t-sg-11',u'itu-t-sg-13',u'itu-t-sg-16',u'ietf'], - u'ITU-T SG-15': [u'itu-t-sg-15'], - u'ITU-T SG-2': [u'itu-t-sg-2'], - u'ITU-T SG11': [u'itu-t-sg-11'], - u'ITU-T SG12, SG13, ATIS, TIA, IEC, IETF ccamp WG, IEEE 802.1, 802.3, OIF, Metro Ethernet Forum, ATM Forum': ['ccamp'], - u'ITU-T SG13': [u'itu-t-sg-13'], - u'ITU-T SG13 and SG15': [u'itu-t-sg-13', u'itu-t-sg-15'], - u'ITU-T SG15': [u'itu-t-sg-15'], - u'ITU-T SG15 (Optical Control Plane)': [u'itu-t-sg-15'], - u'ITU-T SG15 Q10': [u'itu-t-sg-15-q10'], - u'ITU-T SG15 Q10, Q12': [u'itu-t-sg-15-q10',u'itu-t-sg-15-q12'], - u'ITU-T SG15 Q12': [u'itu-t-sg-15-q12'], - u'ITU-T SG15 Q14': [u'itu-t-sg-15-q14'], - u'ITU-T SG15 Q6': [u'itu-t-sg-15-q6'], - u'ITU-T SG15 Q9, Q10, Q12 and Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q10',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG15 Q9, Q11, Q12 and Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q11',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG15 Question 12': [u'itu-t-sg-15-q12'], - u'ITU-T SG15 Question 3': [u'itu-t-sg-15-q3'], - u'ITU-T SG15 Question 6': [u'itu-t-sg-15-q6'], - u'ITU-T SG15 Question 6, Question 12, and Question 14': [u'itu-t-sg-15-q6',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG15 Question 9': [u'itu-t-sg-15-q9'], - u'ITU-T SG15 Questions 12 and 14': [u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG15 and Q14/15': [u'itu-t-sg-15-q14'], - u'ITU-T SG15, Q 9/15, Q 10/15, Q 12/15 and Q 14/15': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q10',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG15, Q 9/15, Q10/15, Q12/15 and Q14/15': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q10',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG15, Q9, Q11, Q12 and Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q11',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'ITU-T SG16': [u'itu-t-sg-16'], - u'ITU-T SG17': [u'itu-t-sg-17'], - u'ITU-T SG17 TSB': [u'itu-t-sg-17-tsb'], - u'ITU-T SG2': [u'itu-t-sg-2'], - u'ITU-T SG2 ': [u'itu-t-sg-2'], - u'ITU-T SG2 Q 1/2': [u'itu-t-sg-2-q1'], - u'ITU-T SG4': [u'itu-t-sg-4'], - u'ITU-T SG4, ITU-T SG15, ITU-T NGNM Focus group, 3GPP SA5, 3GPP2, ATIS/TMOC, TMF, IETF Management, ETSI BRAN': ['iesg'], - u'ITU-T SGs, ITU-R WGs, ITU-D SG2 and the IETF': ['ietf'], - u'ITU-T SGs: 2 (info), 4, 9, 11, 12, 13, 17, 19; ITU-R SGs: 1, 4, 5, 6; ITU-D SG 2; Focus Group on \u2018From/In/To Cars II\u2019 (ITU-T SG 12); ISO TC 22 SC3 and TC 204 ; IEEE 802, 802.11 (WiFi), 802.15.1 (Bluetooth); AUTOSAR WPII-1.1, OSGi VEG, IrDA and JSR298 Tele': ['ietf'], - u'ITU-T SQ15 Question 14': [u'itu-t-sg-15-q14'], - u'ITU-T Study Group 11': [u'itu-t-sg-11'], - u'ITU-T Study Group 11 ': [u'itu-t-sg-11'], - u'ITU-T Study Group 13': [u'itu-t-sg-13'], - u'ITU-T Study Group 15': [u'itu-t-sg-15'], - u'ITU-T Study Group 15 ': [u'itu-t-sg-15'], - u'ITU-T Study Group 15 Q4 ': [u'itu-t-sg-15-q4'], - u'ITU-T Study Group 15 Question 14': [u'itu-t-sg-15-q14'], - u'ITU-T Study Group 15 Question 3': [u'itu-t-sg-15-q3'], - u'ITU-T Study Group 15 Question 6': [u'itu-t-sg-15-q6'], - u'ITU-T TSAG External Relations Group': [u'itu-t-tsag'], - u'ITU-T Working Party 3/13 and ITU-T Question 11/13': [u'itu-t-sg-13-wp3',u'itu-t-sg-13-q11'], - u'ITU-T and ITU-T Study Group 13': [u'itu-t', u'itu-t-sg-13'], - u'ITU-T, ITU SG13': [u'itu-t', u'itu-t-sg-13'], - u'ITU-T-SG13': [u'itu-t-sg-13'], - u'ITU-T/FG Cloud': ['itu-t-fg-cloud'], - u'ITU-T/SG11': [u'itu-t-sg-11'], - u'ITU-T/Study Group 11': [u'itu-t-sg-11'], - u'Kam Lam, Rapporteur for Question 14 of ITU-T SG15': [u'itu-t-sg-15-q14'], - u'Kam Lam, Rapporteur for Question 14 of ITU-T Study Group 15': [u'itu-t-sg-15-q14'], - u'Lyndon Ong (lyong@ciena.com)': [u'sigtran'], - u'MFA Forum': ['mfa-forum'], - u'MPLS and Frame Relay Alliance': ['mfa'], - u'Mr. Kam Lam, Rapporteur for Question 14 of ITU-T Study Group 15': [u'itu-t-sg-15-q14'], - u'National, Multi-National or Regional Organizations': ['nmnro'], - u'OMA': [u'oma'], - u'OMA MEM': [u'oma-mwg-mem'], - u'OMA MWG': [u'oma-mwg'], - u'OMA MWG MEM Sub Working Group': [u'oma-mwg-mem'], - u'OMA TP': [u'oma-tp'], - u'OPS ADs (Randy Bush and Bert Wijnen)': [u'ops'], - u'OPS Area Director Bert Wijnen': [u'ops'], - u'Open IPTV Forum': ['opif'], - u'Open Mobile Alliance Broadcasting Working Group': [u'oma-bcast'], - u'Open Mobile Alliance, PAG Working Group': [u'oma-pag-wg'], - u'PDNR ITU-R M.[IP CHAR]': ['ietf'], # pending robert - u'PWE WG': ['pwe3'], - u'Phase 1 report to SG 4': ['ops'], - u'Q7/13': [u'itu-t-sg-13-q7'], - u'Rao Cherukuri, Chair MPLS and Frame Relay Alliance Technical Committee': ['mfa'], - u'Rao Cherukuri, Chairman, MPLS and Frame Relay Alliance Technical Committee': ['mfa'], - u'SA2, T2, OMA TP, S3': ['3gpp-tsgsa-sa2','3gpp-tsgt-wg2',u'oma-tp','3gpp-tsgsa-sa3'], - u'SAVI WG, V6OPS WG, OPS AREA, INT AREA': [u'savi', u'v6ops', u'ops', u'int'], - u'SC 29/WG11': [u'iso-iec-jtc1-sc29-wg11'], - u'SC29/WG11': [u'iso-iec-jtc1-sc29-wg11'], - u'SG 15,Questions 3,9, 11,12, 14 and WP 3/15': [u'itu-t-sg-15-q3',u'itu-t-sg-15-q9',u'itu-t-sg-15-q11',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14',u'itu-t-sg-15-wp3'], - u'SG-13, Q.3/13, Q.9/13 and TSAG': [u'itu-t-sg-13-q3',u'itu-t-sg-13-q9',u'itu-t-tsag'], - u'SG13, SG13 WP4': [u'itu-t-sg-13',u'itu-t-sg-13-wp4'], - u'SG15 Q9': [u'itu-t-sg-15-q9'], - u'SG15, Q9, Q10, Q12 and Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q10',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'SG15, Q9, Q10, Q12, Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q10',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'SG15, Q9, Q10, Q12, and Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q10',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'SG15, Q9, Q11, Q12 and Q14': [u'itu-t-sg-15-q9',u'itu-t-sg-15-q11',u'itu-t-sg-15-q12',u'itu-t-sg-15-q14'], - u'SG17, SG13, SG11, JCA-NID, ETSI TISPAN WG4, 3GPP TSG CT4, IESG': ['iesg'], - u'SG4': [u'itu-t-sg-4'], - u'SIP aand SIPPING WGs': [u'sip', u'sipping'], - u'SIP, SIPPING, SIMPLE WGs': [u'sip', u'sipping', u'simple'], - u'SUB-IP and Transport Areas': [u'sub', u'tsv'], - u'Scott Bradner': ['ccamp','isis','sigtran'], - u'Scott Bradner (sob@harvard.edu)': ['iesg'], # placeholder for explicit mappings - u'Scott Bradner (sob@harvard.edu) Done': ['mpls'], - u'SubIP ADs (sob@harvard.edu,bwijnen@lucent.com)': [u'sub'], - u'TEWG, MPLS, CCAMP WGs': [u'tewg', u'mpls', u'ccamp'], - u'TRILL WG co-chairs and IEEE-IETF liaisons': ['trill'], - u'TRILL WG co-chairs, ADs, and IEEE-IETF liaisons': ['trill'], - u'TSG-X Corr to IETF re MIP6 Bootstrapping': ['int'], - u'The IAB': [u'iab'], - u'The IESG': [u'iesg'], - u'The IESG and the IAB': [u'iesg', u'iab'], - u'The IETF': [u'ietf'], - u'Tom Taylor (taylor@nortelnetworks.com), Megaco WG Chair': [u'megaco'], - u'Transport ADs (Allison Mankin and Scott Bradner)': [u'tsv'], - u'Transport Area Directors': [u'tsv'], - u'Unicode Consortium': ['unicode'], - u'Unicode Technical Committee': ['unicode'], - u'Various IETF WGs': ['mobileip','pppext','avt'], - u'W3C Geolocation WG': ['w3c-geolocation-wg'], - u'W3C Geolocation Working Group': ['w3c-geolocation-wg'], - u'W3C Multimedia Interaction Work Group': ['w3c-mmi'], - u'WiFi Alliance and Wireless Broadband Alliance': ['wifi-alliance','wba'], - u'chair@ietf.org': [u'ietf'], - u'gonzalo.camarillo@ericsson.com': ['ietf'], - u'tsbdir@itu.int': ['itu-t'] -} - -FROM_NAME_MAPPING = { - u'3GPP TSG RAN WG2': ['3gpp-tsgran-ran2'], - u'': ['itu-t-sg-13'], - u'ATIS': ['atis'], - u'ATM Forum': [u'atm-forum'], - u'ATM Forum AIC WG': [u'afic'], - u'BBF': [u'broadband-forum'], - u'DSL Forum': [u'dsl-forum'], - u'EPCGlobal': [u'epcglobal'], - u'ETSI': ['etsi'], - u'ETSI EMTEL': ['etsi-emtel'], - u'ETSI TC HF': ['etsi-tc-hf'], - u'ETSI TISPAN': ['etsi-tispan'], - u'ETSI TISPAN WG5': ['etsi-tispan-wg5'], - u'Femto Forum': ['femto-forum'], - u'GSMA WLAN': ['gsma-wlan'], - u'IEEE 802': [u'ieee-802'], - u'IEEE 802.11': [u'ieee-802-11'], - u'IEEE 802.21': [u'ieee-802-21'], - u'IETF ADSL MIB': [u'adslmib'], - u'IETF MEAD Team': [u'mead'], - u'IETF Mead Team': [u'mead'], - u'IETF liaison on MPLS': [u'mpls'], - u'INCITS T11.5': ['incits-t11-5'], - u'ISO/IEC JTC 1 SC 29/WG 11': [u'iso-iec-jtc1-sc29-wg11'], - u'ISO/IEC JTC 1 SGSN': ['iso-iec-jtc1-sgsn'], - u'ISO/IEC JTC 1/SC31/WG 4/SG 1': ['iso-iec-jtc1-sc31-wg4'], - u'ISO/IEC JTC 1/WG 7': [u'iso-iec-jtc1-wg7'], - u'ISO/IEC JTC SC 29/WG1': [u'iso-iec-jtc1-sc29-wg1'], - u'ISO/IEC JTC SC 29/WG11': [u'iso-iec-jtc1-sc29-wg11'], - u'ISO/IEC JTC1/SC29/WG11': [u'iso-iec-jtc1-sc29-wg11'], - u'ISO/IEC JTC1/SC6': [u'iso-iec-jtc1-sc6'], - u'ITU': [u'itu'], - u'ITU IPv6 Group': [u'itu-t-ipv6-group'], - u'ITU-Q.14/15': [u'itu-t-sg-15-q14'], - u'ITU-R WP 5A': [u'itu-r-wp5a'], - u'ITU-R WP 5D': [u'itu-r-wp5d'], - u'ITU-R WP8A': [u'itu-r-wp8a'], - u'ITU-R WP8F': [u'itu-r-wp8f'], - u'ITU-SC29': ['iso-iec-jtc1-sc29-wg1'], - u'ITU-SG 15': [u'itu-t-sg-15'], - u'ITU-SG 7': [u'itu-t-sg-7'], - u'ITU-SG 8': [u'itu-t-sg-8'], - u'ITU-T FG Cloud': [u'itu-t-fg-cloud'], - u'ITU-T FG IPTV': [u'itu-t-fg-iptv'], - u'ITU-T Q.5/13': [u'itu-t-sg-13-q5'], - u'ITU-T SG 15 Q14/15': [u'itu-t-sg-15-q14'], - u'ITU-T SG 15 WP 1': [u'itu-t-sg-15-wp1'], - u'ITU-T SG 15, Q.11': [u'itu-t-sg-15-q11'], - u'ITU-T SG 15, Q.14/15': [u'itu-t-sg-15-q14'], - u'ITU-T SG 4': [u'itu-t-sg-4'], - u'ITU-T SG 6': [u'itu-t-sg-6'], - u'ITU-T SG 7': [u'itu-t-sg-7'], - u'ITU-T SG 9': [u'itu-t-sg-9'], - u'ITUT-T SG 16': [u'itu-t-sg-16'], - u'JCA-IdM': [u'itu-t-jca-idm'], - u'MFA Forum': ['mfa-forum'], - u'MPEG': ['mpeg'], - u'MPLS Forum': ['mpls-forum'], - u'MPLS and FR Alliance': ['mfa'], - u'MPLS and Frame Relay Alliance': ['mfa'], - u'NANP LNPA WG': ['nanc-lnpa-wg'], - u'NGN Management Focus Group': ['itu-t-ngnmfg'], - u'OMA': [u'oma'], - u'OMA COM-CAB SWG': [u'oma-com-cab'], - u'OMA COM-CPM Group': [u'oma-com-cpm'], - u'Open IPTV Forum': ['opif'], - u'SC 29/WG 1': [u'iso-iec-jtc1-sc29-wg1'], - u'SC 29/WG 11': [u'iso-iec-jtc1-sc29-wg11'], - u'SC29 4559': [u'iso-iec-jtc1-sc29-wg11'], - u'SC29 4561': [u'iso-iec-jtc1-sc29-wg11'], - u'SIP, SIPPING, SIMPLE WGs': [u'sip', u'sipping', u'simple'], - u'T1M1': ['t1m1'], - u'T1S1': ['t1s1'], - u'T1X1 cc: ITU-T Q. 14/15 (for info)': ['t1x1','itu-t-sg-15-q14'], - u'TIA': ['tia'], - u'TMOC': ['tmoc'], - u'The IAB': [u'iab'], - u'The IESG': [u'iesg'], - u'The IESG and the IAB': [u'iesg', u'iab'], - u'The IETF': [u'ietf'], - u'W3C Geolocation WG': ['w3c-geolocation-wg'], - u'WIG': ['wig'] -} - -DEFAULT_POC = { - '3gpp':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgct':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgct-ct1':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgct-ct4':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgran':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgran-ran2':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgsa':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgsa-sa2':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgsa-sa3':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgsa-sa4':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - '3gpp-tsgt-wg2':'georg.mayer.huawei@gmx.com,3GPPLiaison@etsi.org', - 'ieee-802':'Paul Nikolich ,Pat Thaler ', - 'ieee-802-1':'Paul Nikolich ,Glen Parsons ,John Messenger ', - 'ieee-802-11':'Dorothy Stanley , Adrian Stephens ', - 'cablelabs':'Greg White ', - 'iso-iec-jtc1-sc29':'Watanabe Shinji ', - 'iso-iec-jtc1-sc29-wg1':'Watanabe Shinji ', - 'iso-iec-jtc1-sc29-wg11':'Watanabe Shinji ', - 'unicode':'Richard McGowan ', - 'isotc46':'sabine.donnardcusse@afnor.org', - 'w3c':u'Wendy Seltzer ,Philippe Le Hégaret ', - # change to m3aawg - 'maawg':'Mike Adkins ,technical-chair@mailman.m3aawg.org', - 'ecma-tc39':'John Neuman ,Istvan Sebestyen ', -} - \ No newline at end of file diff --git a/ietf/liaisons/migrations/0006_remove_fields.py b/ietf/liaisons/migrations/0006_remove_fields.py deleted file mode 100644 index 0c87983ea..000000000 --- a/ietf/liaisons/migrations/0006_remove_fields.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0005_migrate_groups'), - ] - - operations = [ - migrations.RemoveField( - model_name='liaisonstatement', - name='action_taken', - ), - migrations.RemoveField( - model_name='liaisonstatement', - name='approved', - ), - migrations.RemoveField( - model_name='liaisonstatement', - name='from_group', - ), - migrations.RemoveField( - model_name='liaisonstatement', - name='modified', - ), - migrations.RemoveField( - model_name='liaisonstatement', - name='related_to', - ), - migrations.RemoveField( - model_name='liaisonstatement', - name='reply_to', - ), - migrations.RemoveField( - model_name='liaisonstatement', - name='submitted', - ), - migrations.RemoveField( - model_name='liaisonstatement', - name='to_group', - ), - #migrations.RemoveField( - # model_name='liaisonstatement', - # name='from_contact', - #), - ] diff --git a/ietf/liaisons/migrations/0007_auto_20151009_1220.py b/ietf/liaisons/migrations/0007_auto_20151009_1220.py deleted file mode 100644 index bd5d53b5d..000000000 --- a/ietf/liaisons/migrations/0007_auto_20151009_1220.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0006_remove_fields'), - ] - - operations = [ - migrations.AlterField( - model_name='liaisonstatement', - name='from_groups', - field=models.ManyToManyField(related_name='liaisonstatement_from_set', to='group.Group', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='liaisonstatement', - name='to_groups', - field=models.ManyToManyField(related_name='liaisonstatement_to_set', to='group.Group', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/liaisons/migrations/0008_auto_20151110_1352.py b/ietf/liaisons/migrations/0008_auto_20151110_1352.py deleted file mode 100644 index 605af9251..000000000 --- a/ietf/liaisons/migrations/0008_auto_20151110_1352.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def create_required_tags(apps, schema_editor): - LiaisonStatement = apps.get_model("liaisons", "LiaisonStatement") - for s in LiaisonStatement.objects.filter(deadline__isnull=False): - if not s.tags.filter(slug='taken'): - s.tags.add('required') - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0007_auto_20151009_1220'), - ] - - operations = [ - migrations.RunPython(create_required_tags), - ] diff --git a/ietf/liaisons/migrations/0009_remove_fields.py b/ietf/liaisons/migrations/0009_remove_fields.py deleted file mode 100644 index 69068fb33..000000000 --- a/ietf/liaisons/migrations/0009_remove_fields.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0008_auto_20151110_1352'), - ] - - operations = [ - migrations.RemoveField( - model_name='liaisonstatement', - name='from_name', - ), - migrations.RemoveField( - model_name='liaisonstatement', - name='to_name', - ), - ] diff --git a/ietf/liaisons/migrations/0010_auto_20151119_1317.py b/ietf/liaisons/migrations/0010_auto_20151119_1317.py deleted file mode 100644 index 9f3eba705..000000000 --- a/ietf/liaisons/migrations/0010_auto_20151119_1317.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0009_remove_fields'), - ] - - operations = [ - migrations.AlterField( - model_name='liaisonstatement', - name='title', - field=models.CharField(max_length=255), - preserve_default=True, - ), - migrations.AlterField( - model_name='liaisonstatement', - name='to_contacts', - field=models.CharField(help_text=b'Contacts at recipient group', max_length=255), - preserve_default=True, - ), - ] diff --git a/ietf/liaisons/migrations/0011_auto_20161013_1034.py b/ietf/liaisons/migrations/0011_auto_20161013_1034.py deleted file mode 100644 index 8937eb432..000000000 --- a/ietf/liaisons/migrations/0011_auto_20161013_1034.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0010_auto_20151119_1317'), - ] - - operations = [ - migrations.AlterField( - model_name='liaisonstatement', - name='to_contacts', - field=models.CharField(help_text=b'Contacts at recipient group', max_length=2000), - preserve_default=True, - ), - ] diff --git a/ietf/liaisons/migrations/0012_auto_20161207_1036.py b/ietf/liaisons/migrations/0012_auto_20161207_1036.py deleted file mode 100644 index 5c95dba1d..000000000 --- a/ietf/liaisons/migrations/0012_auto_20161207_1036.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('liaisons', '0011_auto_20161013_1034'), - ] - - operations = [ - migrations.AlterField( - model_name='liaisonstatement', - name='tags', - field=models.ManyToManyField(to='name.LiaisonStatementTagName', blank=True), - ), - migrations.AlterField( - model_name='liaisonstatementgroupcontacts', - name='group', - field=models.ForeignKey(null=True, to='group.Group', unique=True), - ), - ] diff --git a/ietf/mailinglists/migrations/0001_initial.py b/ietf/mailinglists/migrations/0001_initial.py index f5dcb34ec..9efd709e9 100644 --- a/ietf/mailinglists/migrations/0001_initial.py +++ b/ietf/mailinglists/migrations/0001_initial.py @@ -1,11 +1,53 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 +from __future__ import unicode_literals + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models -from django.db import migrations class Migration(migrations.Migration): + initial = True + dependencies = [ + ('person', '0001_initial'), ] operations = [ + migrations.CreateModel( + name='List', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=32)), + ('description', models.CharField(max_length=256)), + ('advertised', models.BooleanField(default=True)), + ], + ), + migrations.CreateModel( + name='Subscribed', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(auto_now_add=True)), + ('email', models.CharField(max_length=64, validators=[django.core.validators.EmailValidator()])), + ('lists', models.ManyToManyField(to='mailinglists.List')), + ], + options={ + 'verbose_name_plural': 'Subscribed', + }, + ), + migrations.CreateModel( + name='Whitelisted', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(auto_now_add=True)), + ('email', models.CharField(max_length=64, validators=[django.core.validators.EmailValidator()], verbose_name=b'Email address')), + ('by', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ], + options={ + 'verbose_name_plural': 'Whitelisted', + }, + ), ] diff --git a/ietf/mailinglists/migrations/0002_list_subscribed_whitelisted.py b/ietf/mailinglists/migrations/0002_list_subscribed_whitelisted.py deleted file mode 100644 index 63bb3d939..000000000 --- a/ietf/mailinglists/migrations/0002_list_subscribed_whitelisted.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0013_add_plain_name_aliases'), - ('mailinglists', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='List', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=32)), - ('description', models.CharField(max_length=256)), - ('advertised', models.BooleanField(default=True)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Subscribed', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('time', models.DateTimeField(auto_now_add=True)), - ('email', models.CharField(max_length=64, validators=[django.core.validators.EmailValidator()])), - ('lists', models.ManyToManyField(to='mailinglists.List')), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Whitelisted', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('time', models.DateTimeField(auto_now_add=True)), - ('email', models.CharField(max_length=64, verbose_name=b'Email address', validators=[django.core.validators.EmailValidator()])), - ('by', models.ForeignKey(to='person.Person')), - ], - options={ - }, - bases=(models.Model,), - ), - ] diff --git a/ietf/mailinglists/migrations/0003_import_subscribers.py b/ietf/mailinglists/migrations/0003_import_subscribers.py deleted file mode 100644 index 3106aade9..000000000 --- a/ietf/mailinglists/migrations/0003_import_subscribers.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -from ietf.mailinglists.models import List, Subscribed -from ietf.mailinglists.management.commands.import_mailman_listinfo import import_mailman_listinfo - -def forward_mailman_import(apps, schema_editor): - import_mailman_listinfo(verbosity=0) - -def reverse_mailman_import(apps, schema_editor): - List.objects.all().delete() - Subscribed.objects.all().delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('mailinglists', '0002_list_subscribed_whitelisted'), - ] - - operations = [ - migrations.RunPython(forward_mailman_import,reverse_mailman_import), - - ] diff --git a/ietf/mailinglists/migrations/0004_auto_20160704_0728.py b/ietf/mailinglists/migrations/0004_auto_20160704_0728.py deleted file mode 100644 index 4cec6b44d..000000000 --- a/ietf/mailinglists/migrations/0004_auto_20160704_0728.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailinglists', '0003_import_subscribers'), - ] - - operations = [ - migrations.AlterModelOptions( - name='subscribed', - options={'verbose_name_plural': 'Subscribed'}, - ), - migrations.AlterModelOptions( - name='whitelisted', - options={'verbose_name_plural': 'Whitelisted'}, - ), - ] diff --git a/ietf/mailtrigger/migrations/0001_initial.py b/ietf/mailtrigger/migrations/0001_initial.py index b2c82fe12..a563fa2e3 100644 --- a/ietf/mailtrigger/migrations/0001_initial.py +++ b/ietf/mailtrigger/migrations/0001_initial.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): + initial = True + dependencies = [ ] @@ -13,36 +16,32 @@ class Migration(migrations.Migration): migrations.CreateModel( name='MailTrigger', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('desc', models.TextField(blank=True)), ], options={ 'ordering': ['slug'], }, - bases=(models.Model,), ), migrations.CreateModel( name='Recipient', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('desc', models.TextField(blank=True)), - ('template', models.TextField(null=True, blank=True)), + ('template', models.TextField(blank=True, null=True)), ], options={ 'ordering': ['slug'], }, - bases=(models.Model,), ), migrations.AddField( model_name='mailtrigger', name='cc', - field=models.ManyToManyField(related_name='used_in_cc', null=True, to='mailtrigger.Recipient', blank=True), - preserve_default=True, + field=models.ManyToManyField(blank=True, related_name='used_in_cc', to='mailtrigger.Recipient'), ), migrations.AddField( model_name='mailtrigger', name='to', - field=models.ManyToManyField(related_name='used_in_to', null=True, to='mailtrigger.Recipient', blank=True), - preserve_default=True, + field=models.ManyToManyField(blank=True, related_name='used_in_to', to='mailtrigger.Recipient'), ), ] diff --git a/ietf/mailtrigger/migrations/0002_auto_20150809_1314.py b/ietf/mailtrigger/migrations/0002_auto_20150809_1314.py deleted file mode 100644 index 72be0899b..000000000 --- a/ietf/mailtrigger/migrations/0002_auto_20150809_1314.py +++ /dev/null @@ -1,849 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def make_recipients(apps): - - Recipient=apps.get_model('mailtrigger','Recipient') - - rc = Recipient.objects.create - - rc(slug='iesg', - desc='The IESG', - template='The IESG ') - - rc(slug='iab', - desc='The IAB', - template='The IAB ') - - rc(slug='ietf_announce', - desc='The IETF Announce list', - template='IETF-Announce ') - - rc(slug='rfc_editor', - desc='The RFC Editor', - template='') - - rc(slug='iesg_secretary', - desc='The Secretariat', - template='') - - rc(slug='ietf_secretariat', - desc='The Secretariat', - template='') - - rc(slug='doc_authors', - desc="The document's authors", - template='{% if doc.type_id == "draft" %}<{{doc.name}}@ietf.org>{% endif %}') - - rc(slug='doc_notify', - desc="The addresses in the document's notify field", - template='{{doc.notify}}') - - rc(slug='doc_group_chairs', - desc="The document's group chairs (if the document is assigned to a working or research group)", - template=None) - - rc(slug='doc_group_delegates', - desc="The document's group delegates (if the document is assigned to a working or research group)", - template=None) - - rc(slug='doc_affecteddoc_authors', - desc="The authors of the subject documents of a conflict-review or status-change", - template=None) - - rc(slug='doc_affecteddoc_group_chairs', - desc="The chairs of groups of the subject documents of a conflict-review or status-change", - template=None) - - rc(slug='doc_affecteddoc_notify', - desc="The notify field of the subject documents of a conflict-review or status-change", - template=None) - - rc(slug='doc_shepherd', - desc="The document's shepherd", - template='{% if doc.shepherd %}<{{doc.shepherd.address}}>{% endif %}' ) - - rc(slug='doc_ad', - desc="The document's responsible Area Director", - template='{% if doc.ad %}<{{doc.ad.email_address}}>{% endif %}' ) - - rc(slug='doc_group_mail_list', - desc="The list address of the document's group", - template=None ) - - rc(slug='doc_stream_manager', - desc="The manager of the document's stream", - template=None ) - - rc(slug='stream_managers', - desc="The managers of any related streams", - template=None ) - - rc(slug='conflict_review_stream_manager', - desc="The stream manager of a document being reviewed for IETF stream conflicts", - template=None ) - - rc(slug='conflict_review_steering_group', - desc="The steering group (e.g. IRSG) of a document being reviewed for IETF stream conflicts", - template = None) - - rc(slug='iana_approve', - desc="IANA's draft approval address", - template='IANA ') - - rc(slug='iana_last_call', - desc="IANA's draft last call address", - template='IANA ') - - rc(slug='iana_eval', - desc="IANA's draft evaluation address", - template='IANA ') - - rc(slug='iana', - desc="IANA", - template='') - - rc(slug='group_mail_list', - desc="The group's mailing list", - template='{% if group.list_email %}<{{ group.list_email }}>{% endif %}') - - rc(slug='group_steering_group', - desc="The group's steering group (IESG or IRSG)", - template=None) - - rc(slug='group_chairs', - desc="The group's chairs", - template="{% if group and group.acronym %}<{{group.acronym}}-chairs@ietf.org>{% endif %}") - - rc(slug='group_responsible_directors', - desc="The group's responsible AD(s) or IRTF chair", - template=None) - - rc(slug='doc_group_responsible_directors', - desc="The document's group's responsible AD(s) or IRTF chair", - template=None) - - rc(slug='internet_draft_requests', - desc="The internet drafts ticketing system", - template='') - - rc(slug='submission_submitter', - desc="The person that submitted a draft", - template='{{submission.submitter}}') - - rc(slug='submission_authors', - desc="The authors of a submitted draft", - template=None) - - rc(slug='submission_group_chairs', - desc="The chairs of a submitted draft belonging to a group", - template=None) - - rc(slug='submission_confirmers', - desc="The people who can confirm a draft submission", - template=None) - - rc(slug='submission_group_mail_list', - desc="The people who can confirm a draft submission", - template=None) - - rc(slug='doc_non_ietf_stream_manager', - desc="The document's stream manager if the document is not in the IETF stream", - template=None) - - rc(slug='rfc_editor_if_doc_in_queue', - desc="The RFC Editor if a document is in the RFC Editor queue", - template=None) - - rc(slug='doc_discussing_ads', - desc="Any ADs holding an active DISCUSS position on a given document", - template=None) - - rc(slug='group_changed_personnel', - desc="Any personnel who were added or deleted when a group's personnel changes", - template='{{ changed_personnel | join:", " }}') - - rc(slug='session_requests', - desc="The session request ticketing system", - template='') - - rc(slug='session_requester', - desc="The person that requested a meeting slot for a given group", - template=None) - - rc(slug='logged_in_person', - desc="The person currently logged into the datatracker who initiated a given action", - template='{% if person and person.email_address %}<{{ person.email_address }}>{% endif %}') - - rc(slug='ipr_requests', - desc="The ipr disclosure handling system", - template='') - - rc(slug='ipr_submitter', - desc="The submitter of an IPR disclosure", - template='{% if ipr.submitter_email %}{{ ipr.submitter_email }}{% endif %}') - - rc(slug='ipr_updatedipr_contacts', - desc="The submitter (or ietf participant if the submitter is not available) " - "of all IPR disclosures updated directly by this disclosure, without recursing " - "to what the updated disclosures might have updated.", - template=None) - - rc(slug='ipr_updatedipr_holders', - desc="The holders of all IPR disclosures updated by disclosure and disclosures updated by those and so on.", - template=None) - - rc(slug='ipr_announce', - desc="The IETF IPR announce list", - template='ipr-announce@ietf.org') - - rc(slug='doc_ipr_group_or_ad', - desc="Leadership for a document that has a new IPR disclosure", - template=None) - - rc(slug='liaison_to_contacts', - desc="The addresses captured in the To field of the liaison statement form", - template='{{liaison.to_contacts}}') - - rc(slug='liaison_cc', - desc="The addresses captured in the Cc field of the liaison statement form", - template='{{liaison.cc_contacts}}') - - rc(slug='liaison_technical_contacts', - desc="The addresses captured in the technical contact field of the liaison statement form", - template='{{liaison.technical_contacts}}') - - rc(slug='liaison_response_contacts', - desc="The addresses captured in the response contact field of the liaison statement form", - template='{{liaison.response_contacts}}') - - rc(slug='liaison_approvers', - desc="The set of people who can approve this liasion statemetns", - template='{{liaison.approver_emails|join:", "}}') - - rc(slug='liaison_manager', - desc="The assigned liaison manager for an external group ", - template=None) - - rc(slug='nominator', - desc="The person that submitted a nomination to nomcom", - template='{{nominator}}') - - rc(slug='nominee', - desc="The person nominated for a position", - template='{{nominee}}') - - rc(slug='nomcom_chair', - desc="The chair of a given nomcom", - template='{{nomcom.group.get_chair.email.address}}') - - rc(slug='commenter', - desc="The person providing a comment to nomcom", - template='{{commenter}}') - - rc(slug='new_work', - desc="The IETF New Work list", - template='') - -def make_mailtriggers(apps): - - Recipient=apps.get_model('mailtrigger','Recipient') - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - - def mt_factory(slug,desc,to_slugs,cc_slugs=[]): - - # Try to protect ourselves from typos - all_slugs = to_slugs[:] - all_slugs.extend(cc_slugs) - for recipient_slug in all_slugs: - try: - Recipient.objects.get(slug=recipient_slug) - except Recipient.DoesNotExist: - print "****Some rule tried to use",recipient_slug - raise - - m = MailTrigger.objects.create(slug=slug, desc=desc) - m.to = Recipient.objects.filter(slug__in=to_slugs) - m.cc = Recipient.objects.filter(slug__in=cc_slugs) - - mt_factory(slug='ballot_saved', - desc="Recipients when a new ballot position " - "(with discusses, other blocking positions, " - "or comments) is saved", - to_slugs=['iesg'], - cc_slugs=['doc_notify', - 'doc_group_mail_list', - 'doc_authors', - 'doc_group_chairs', - 'doc_shepherd', - 'doc_affecteddoc_authors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - 'conflict_review_stream_manager', - ] - ) - - mt_factory(slug='ballot_deferred', - desc="Recipients when a ballot is deferred to " - "or undeferred from a future telechat", - to_slugs=['iesg', - 'iesg_secretary', - 'doc_group_chairs', - 'doc_notify', - 'doc_authors', - 'doc_shepherd', - 'doc_affecteddoc_authors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - 'conflict_review_stream_manager', - ], - ) - - mt_factory(slug='ballot_approved_ietf_stream', - desc="Recipients when an IETF stream document ballot is approved", - to_slugs=['ietf_announce'], - cc_slugs=['iesg', - 'doc_notify', - 'doc_ad', - 'doc_authors', - 'doc_shepherd', - 'doc_group_mail_list', - 'doc_group_chairs', - 'rfc_editor', - ], - ) - - mt_factory(slug='ballot_approved_ietf_stream_iana', - desc="Recipients for IANA message when an IETF stream document ballot is approved", - to_slugs=['iana_approve']) - - mt_factory(slug='ballot_approved_conflrev', - desc="Recipients when a conflict review ballot is approved", - to_slugs=['conflict_review_stream_manager', - 'conflict_review_steering_group', - 'doc_affecteddoc_authors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - 'doc_notify', - ], - cc_slugs=['iesg', - 'ietf_announce', - 'iana', - ], - ) - - mt_factory(slug='ballot_approved_charter', - desc="Recipients when a charter is approved", - to_slugs=['ietf_announce',], - cc_slugs=['group_mail_list', - 'group_steering_group', - 'group_chairs', - 'doc_notify', - ], - ) - - mt_factory(slug='ballot_approved_status_change', - desc="Recipients when a status change is approved", - to_slugs=['ietf_announce',], - cc_slugs=['iesg', - 'rfc_editor', - 'doc_notify', - 'doc_affecteddoc_authors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - ], - ) - - mt_factory(slug='ballot_issued', - desc="Recipients when a ballot is issued", - to_slugs=['iesg',]) - - mt_factory(slug='ballot_issued_iana', - desc="Recipients for IANA message when a ballot is issued", - to_slugs=['iana_eval',]) - - mt_factory(slug='last_call_requested', - desc="Recipients when AD requests a last call", - to_slugs=['iesg_secretary',], - cc_slugs=['doc_ad', - 'doc_shepherd', - 'doc_notify', - ], - ) - - mt_factory(slug='last_call_issued', - desc="Recipients when a last call is issued", - to_slugs=['ietf_announce',], - cc_slugs=['doc_ad', - 'doc_shepherd', - 'doc_authors', - 'doc_notify', - 'doc_group_mail_list', - 'doc_group_chairs', - 'doc_affecteddoc_authors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - ] - ) - - mt_factory(slug='last_call_issued_iana', - desc="Recipients for IANA message when a last call is issued", - to_slugs=['iana_last_call']) - - mt_factory(slug='last_call_expired', - desc="Recipients when a last call has expired", - to_slugs=['doc_ad', - 'doc_notify', - 'doc_authors', - 'doc_shepherd', - ], - cc_slugs=['iesg_secretary',], - ) - - mt_factory(slug='pubreq_iesg', - desc="Recipients when a draft is submitted to the IESG", - to_slugs=['doc_ad',], - cc_slugs=['iesg_secretary', - 'doc_notify', - 'doc_shepherd', - 'doc_group_chairs', - ], - ) - - mt_factory(slug='pubreq_rfced', - desc="Recipients when a non-IETF stream manager requests publication", - to_slugs=['rfc_editor',]) - - mt_factory(slug='pubreq_rfced_iana', - desc="Recipients for IANA message when a non-IETF stream manager " - "requests publication", - to_slugs=['iana_approve',]) - - mt_factory(slug='charter_internal_review', - desc="Recipients for message noting that internal review has " - "started on a charter", - to_slugs=['iesg', - 'iab', - ]) - - mt_factory(slug='charter_external_review', - desc="Recipients for a charter external review", - to_slugs=['ietf_announce',], - cc_slugs=['group_mail_list',], - ) - - mt_factory(slug='charter_external_review_new_work', - desc="Recipients for a message to new-work about a charter review", - to_slugs=['new_work',]) - - mt_factory(slug='conflrev_requested', - desc="Recipients for a stream manager's request for an IETF conflict review", - to_slugs=['iesg_secretary'], - cc_slugs=['iesg', - 'doc_notify', - 'doc_affecteddoc_authors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - ], - ) - - mt_factory(slug='conflrev_requested_iana', - desc="Recipients for IANA message when a stream manager requests " - "an IETF conflict review", - to_slugs=['iana_eval',]) - - mt_factory(slug='doc_stream_changed', - desc="Recipients for notification when a document's stream changes", - to_slugs=['doc_authors', - 'stream_managers', - 'doc_notify', - ]) - - mt_factory(slug='doc_stream_state_edited', - desc="Recipients when the stream state of a document is manually edited", - to_slugs=['doc_group_chairs', - 'doc_group_delegates', - 'doc_shepherd', - 'doc_authors', - ]) - - mt_factory(slug='group_milestones_edited', - desc="Recipients when any of a group's milestones are edited", - to_slugs=['group_responsible_directors', - 'group_chairs', - ]) - - mt_factory(slug='group_approved_milestones_edited', - desc="Recipients when the set of approved milestones for a group are edited", - to_slugs=['group_mail_list', - ]) - - mt_factory(slug='doc_state_edited', - desc="Recipients when a document's state is manually edited", - to_slugs=['doc_notify', - 'doc_ad', - 'doc_authors', - 'doc_shepherd', - 'doc_group_chairs', - 'doc_affecteddoc_authors', - 'doc_group_responsible_directors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - ]) - - mt_factory(slug='doc_iana_state_changed', - desc="Recipients when IANA state information for a document changes ", - to_slugs=['doc_notify', - 'doc_ad', - 'doc_authors', - 'doc_shepherd', - 'doc_group_chairs', - 'doc_affecteddoc_authors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - ]) - - mt_factory(slug='doc_telechat_details_changed', - desc="Recipients when a document's telechat date or other " - "telechat specific details are changed", - to_slugs=['iesg', - 'iesg_secretary', - 'doc_notify', - 'doc_authors', - 'doc_shepherd', - 'doc_group_chairs', - 'doc_affecteddoc_authors', - 'doc_affecteddoc_group_chairs', - 'doc_affecteddoc_notify', - ]) - - mt_factory(slug='doc_pulled_from_rfc_queue', - desc="Recipients when a document is taken out of the RFC's editor queue " - "before publication", - to_slugs=['iana', - 'rfc_editor', - ], - cc_slugs=['iesg_secretary', - 'iesg', - 'doc_notify', - 'doc_authors', - 'doc_shepherd', - 'doc_group_chairs', - ], - ) - - mt_factory(slug='doc_replacement_changed', - desc="Recipients when what a document replaces or is replaced by changes", - to_slugs=['doc_authors', - 'doc_notify', - 'doc_shepherd', - 'doc_group_chairs', - 'doc_group_responsible_directors', - ]) - - mt_factory(slug='charter_state_edit_admin_needed', - desc="Recipients for message to adminstrators when a charter state edit " - "needs followon administrative action", - to_slugs=['iesg_secretary']) - - mt_factory(slug='group_closure_requested', - desc="Recipients for message requesting closure of a group", - to_slugs=['iesg_secretary']) - - mt_factory(slug='doc_expires_soon', - desc="Recipients for notification of impending expiration of a document", - to_slugs=['doc_authors'], - cc_slugs=['doc_notify', - 'doc_shepherd', - 'doc_group_chairs', - 'doc_group_responsible_directors', - ], - ) - - mt_factory(slug='doc_expired', - desc="Recipients for notification of a document's expiration", - to_slugs=['doc_authors'], - cc_slugs=['doc_notify', - 'doc_shepherd', - 'doc_group_chairs', - 'doc_group_responsible_directors', - ], - ) - - mt_factory(slug='resurrection_requested', - desc="Recipients of a request to change the state of a draft away from 'Dead'", - to_slugs=['internet_draft_requests',]) - - mt_factory(slug='resurrection_completed', - desc="Recipients when a draft resurrection request has been completed", - to_slugs=['iesg_secretary', - 'doc_ad', - ]) - - mt_factory(slug='sub_manual_post_requested', - desc="Recipients for a manual post request for a draft submission", - to_slugs=['internet_draft_requests',], - cc_slugs=['submission_submitter', - 'submission_authors', - 'submission_group_chairs', - ], - ) - - mt_factory(slug='sub_chair_approval_requested', - desc="Recipients for a message requesting group chair approval of " - "a draft submission", - to_slugs=['submission_group_chairs',]) - - mt_factory(slug='sub_confirmation_requested', - desc="Recipients for a message requesting confirmation of a draft submission", - to_slugs=['submission_confirmers',]) - - mt_factory(slug='sub_management_url_requested', - desc="Recipients for a message with the full URL for managing a draft submission", - to_slugs=['submission_confirmers',]) - - mt_factory(slug='sub_announced', - desc="Recipients for the announcement of a successfully submitted draft", - to_slugs=['ietf_announce', - ], - cc_slugs=['submission_group_mail_list', - ], - ) - - mt_factory(slug='sub_announced_to_authors', - desc="Recipients for the announcement to the authors of a successfully " - "submitted draft", - to_slugs=['submission_authors', - 'submission_confirmers', - ]) - - mt_factory(slug='sub_new_version', - desc="Recipients for notification of a new version of an existing document", - to_slugs=['doc_notify', - 'doc_ad', - 'doc_non_ietf_stream_manager', - 'rfc_editor_if_doc_in_queue', - 'doc_discussing_ads', - ]) - - mt_factory(slug='group_personnel_change', - desc="Recipients for a message noting changes in a group's personnel", - to_slugs=['iesg_secretary', - 'group_responsible_directors', - 'group_chairs', - 'group_changed_personnel', - ]) - - mt_factory(slug='session_requested', - desc="Recipients for a normal meeting session request", - to_slugs=['session_requests', ], - cc_slugs=['group_mail_list', - 'group_chairs', - 'group_responsible_directors', - 'logged_in_person', - ], - ) - - mt_factory(slug='session_requested_long', - desc="Recipients for a meeting session request for more than 2 sessions", - to_slugs=['group_responsible_directors', ], - cc_slugs=['session_requests', - 'group_chairs', - 'logged_in_person', - ], - ) - - mt_factory(slug='session_request_cancelled', - desc="Recipients for a message cancelling a session request", - to_slugs=['session_requests', ], - cc_slugs=['group_mail_list', - 'group_chairs', - 'group_responsible_directors', - 'logged_in_person', - ], - ) - - mt_factory(slug='session_request_not_meeting', - desc="Recipients for a message noting a group plans to not meet", - to_slugs=['session_requests', ], - cc_slugs=['group_mail_list', - 'group_chairs', - 'group_responsible_directors', - 'logged_in_person', - ], - ) - - mt_factory(slug='session_scheduled', - desc="Recipients for details when a session has been scheduled", - to_slugs=['session_requester', - 'group_chairs', - ], - cc_slugs=['group_mail_list', - 'group_responsible_directors', - ], - ) - - mt_factory(slug='ipr_disclosure_submitted', - desc="Recipients when an IPR disclosure is submitted", - to_slugs=['ipr_requests', ]) - - mt_factory(slug='ipr_disclosure_followup', - desc="Recipients when the secretary follows up on an IPR disclosure submission", - to_slugs=['ipr_submitter', ],) - - mt_factory(slug='ipr_posting_confirmation', - desc="Recipients for a message confirming that a disclosure has been posted", - to_slugs=['ipr_submitter', ], - cc_slugs=['ipr_updatedipr_contacts', - 'ipr_updatedipr_holders', - ], - ) - - mt_factory(slug='ipr_posted_on_doc', - desc="Recipients when an IPR disclosure calls out a given document", - to_slugs=['doc_authors', ], - cc_slugs=['doc_ipr_group_or_ad', - 'ipr_announce', - ], - ) - - mt_factory(slug='liaison_statement_posted', - desc="Recipient for a message when a new liaison statement is posted", - to_slugs=['liaison_to_contacts', ], - cc_slugs=['liaison_cc', - 'liaison_technical_contacts', - 'liaison_response_contacts', - ], - ) - - mt_factory(slug='liaison_approval_requested', - desc="Recipients for a message that a pending liaison statement needs approval", - to_slugs=['liaison_approvers', - ]) - - mt_factory(slug='liaison_deadline_soon', - desc="Recipients for a message about a liaison statement deadline that is " - "approaching.", - to_slugs=['liaison_to_contacts', - ], - cc_slugs=['liaison_cc', - 'liaison_technical_contacts', - 'liaison_response_contacts', - ], - ) - - mt_factory(slug='liaison_manager_update_request', - desc="Recipients for a message requesting an updated list of authorized individuals", - to_slugs=['liaison_manager', ]) - - mt_factory(slug='nomination_received', - desc="Recipients for a message noting a new nomination has been received", - to_slugs=['nomcom_chair', ]) - - mt_factory(slug='nomination_receipt_requested', - desc="Recipients for a message confirming a nomination was made", - to_slugs=['nominator', ]) - - mt_factory(slug='nomcom_comment_receipt_requested', - desc="Recipients for a message confirming a comment was made", - to_slugs=['commenter', ]) - - mt_factory(slug='nomination_created_person', - desc="Recipients for a message noting that a nomination caused a " - "new Person record to be created in the datatracker", - to_slugs=['ietf_secretariat', - 'nomcom_chair', - ], - ) - - mt_factory(slug='nomination_new_nominee', - desc="Recipients the first time a person is nominated for a position, " - "asking them to accept or decline the nomination", - to_slugs=['nominee', ]) - - mt_factory(slug='nomination_accept_reminder', - desc="Recipeints of message reminding a nominee to accept or decline a nomination", - to_slugs=['nominee', ]) - - mt_factory(slug='nomcom_questionnaire', - desc="Recipients for the questionairre that nominees should complete", - to_slugs=['nominee', ]) - - mt_factory(slug='nomcom_questionnaire_reminder', - desc="Recipients for a message reminding a nominee to return a " - "completed questionairre response", - to_slugs=['nominee', ]) - - mt_factory(slug='doc_replacement_suggested', - desc="Recipients for suggestions that this doc replaces or is replace by " - "some other document", - to_slugs=['doc_group_chairs', - 'doc_group_responsible_directors', - 'doc_non_ietf_stream_manager', - 'iesg_secretary', - ]) - - mt_factory(slug='doc_adopted_by_group', - desc="Recipients for notification that a document has been adopted by a group", - to_slugs=['doc_authors', - 'doc_group_chairs', - 'doc_group_mail_list', - ], - cc_slugs=['doc_ad', - 'doc_shepherd', - 'doc_notify', - ], - ) - - mt_factory(slug='doc_added_comment', - desc="Recipients for a message when a new comment is manually entered into the document's history", - to_slugs=['doc_authors', - 'doc_group_chairs', - 'doc_shepherd', - 'doc_group_responsible_directors', - 'doc_non_ietf_stream_manager', - ]) - - mt_factory(slug='doc_intended_status_changed', - desc="Recipients for a message when a document's intended " - "publication status changes", - to_slugs=['doc_authors', - 'doc_group_chairs', - 'doc_shepherd', - 'doc_group_responsible_directors', - 'doc_non_ietf_stream_manager', - ]) - - mt_factory(slug='doc_iesg_processing_started', - desc="Recipients for a message when the IESG begins processing a document ", - to_slugs=['doc_authors', - 'doc_ad', - 'doc_shepherd', - 'doc_group_chairs', - ]) - -def forward(apps, schema_editor): - - make_recipients(apps) - make_mailtriggers(apps) - -def reverse(apps, schema_editor): - - Recipient=apps.get_model('mailtrigger','Recipient') - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - - Recipient.objects.all().delete() - MailTrigger.objects.all().delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailtrigger', '0001_initial'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/mailtrigger/migrations/0003_merge_request_trigger.py b/ietf/mailtrigger/migrations/0003_merge_request_trigger.py deleted file mode 100644 index cbb8e5a62..000000000 --- a/ietf/mailtrigger/migrations/0003_merge_request_trigger.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - - Recipient=apps.get_model('mailtrigger','Recipient') - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - - m = MailTrigger.objects.create( - slug='person_merge_requested', - desc="Recipients for a message requesting that duplicated Person records be merged ") - m.to = Recipient.objects.filter(slug__in=['ietf_secretariat', ]) - -def reverse(apps, schema_editor): - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - MailTrigger.objects.filter(slug='person_merge_requested').delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('mailtrigger', '0002_auto_20150809_1314'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/mailtrigger/migrations/0004_auto_20160516_1659.py b/ietf/mailtrigger/migrations/0004_auto_20160516_1659.py deleted file mode 100644 index 4da1f0e0a..000000000 --- a/ietf/mailtrigger/migrations/0004_auto_20160516_1659.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def make_recipients(apps): - Recipient = apps.get_model('mailtrigger', 'Recipient') - - rc = Recipient.objects.create - - rc(slug='group_secretaries', - desc="The group's secretaries", - template=None) - - -def make_mailtriggers(apps): - Recipient = apps.get_model('mailtrigger','Recipient') - MailTrigger = apps.get_model('mailtrigger','MailTrigger') - - def mt_factory(slug,desc,to_slugs,cc_slugs=[]): - - # Try to protect ourselves from typos - all_slugs = to_slugs[:] - all_slugs.extend(cc_slugs) - for recipient_slug in all_slugs: - try: - Recipient.objects.get(slug=recipient_slug) - except Recipient.DoesNotExist: - print "****Some rule tried to use",recipient_slug - raise - - m = MailTrigger.objects.create(slug=slug, desc=desc) - m.to = Recipient.objects.filter(slug__in=to_slugs) - m.cc = Recipient.objects.filter(slug__in=cc_slugs) - - mt_factory(slug='session_minutes_reminder', - desc="Recipients when a group is sent a reminder " - "to submit minutes for a session", - to_slugs=['group_chairs','group_secretaries'], - cc_slugs=['group_responsible_directors'] - ) - -def forward(apps, schema_editor): - make_recipients(apps) - make_mailtriggers(apps) - - -class Migration(migrations.Migration): - dependencies = [ - ('mailtrigger', '0003_merge_request_trigger'), - ] - - operations = [migrations.RunPython(forward)] diff --git a/ietf/mailtrigger/migrations/0005_interim_trigger.py b/ietf/mailtrigger/migrations/0005_interim_trigger.py deleted file mode 100644 index 3ad6a3947..000000000 --- a/ietf/mailtrigger/migrations/0005_interim_trigger.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def make_mailtriggers(apps): - Recipient = apps.get_model('mailtrigger','Recipient') - MailTrigger = apps.get_model('mailtrigger','MailTrigger') - - def mt_factory(slug,desc,to_slugs,cc_slugs=[]): - - # Try to protect ourselves from typos - all_slugs = to_slugs[:] - all_slugs.extend(cc_slugs) - for recipient_slug in all_slugs: - try: - Recipient.objects.get(slug=recipient_slug) - except Recipient.DoesNotExist: - print "****Some rule tried to use",recipient_slug - raise - - m, _ = MailTrigger.objects.get_or_create(slug=slug, desc=desc) - m.to = Recipient.objects.filter(slug__in=to_slugs) - m.cc = Recipient.objects.filter(slug__in=cc_slugs) - - mt_factory(slug='interim_approved', - desc="Recipients when an interim meeting is approved " - "and an announcement needs to be sent", - to_slugs=['iesg_secretary'], - cc_slugs=[] - ) - -def forward(apps, schema_editor): - make_mailtriggers(apps) - -def reverse(apps, schema_editor): - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - MailTrigger.objects.filter(slug='interim_approved').delete() - -class Migration(migrations.Migration): - dependencies = [ - ('mailtrigger', '0004_auto_20160516_1659'), - ] - - operations = [migrations.RunPython(forward, reverse)] diff --git a/ietf/mailtrigger/migrations/0006_auto_20160707_1933.py b/ietf/mailtrigger/migrations/0006_auto_20160707_1933.py deleted file mode 100644 index 0064e1ebc..000000000 --- a/ietf/mailtrigger/migrations/0006_auto_20160707_1933.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def forward(apps, schema_editor): - - Recipient=apps.get_model('mailtrigger','Recipient') - - rc = Recipient.objects.create - - rc(slug='submission_manualpost_handling', - desc='IETF manual post handling', - template='') - - -def reverse(apps, schema_editor): - Recipient=apps.get_model('mailtrigger','Recipient') - - Recipient.objects.filter(slug='submission_manualpost_handling').delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailtrigger', '0005_interim_trigger'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/mailtrigger/migrations/0007_add_interim_announce.py b/ietf/mailtrigger/migrations/0007_add_interim_announce.py deleted file mode 100644 index d4c12b116..000000000 --- a/ietf/mailtrigger/migrations/0007_add_interim_announce.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - Recipient=apps.get_model('mailtrigger','Recipient') - - Recipient.objects.create( - slug='group_stream_announce', - desc="The group's stream's announce list", - template="{% if group.type_id == 'wg' %}IETF-Announce {% elif group.type_id == 'rg' %}IRTF-Announce {% endif %}" - ) - - annc = MailTrigger.objects.create( - slug='interim_announced', - desc='Recipients when an interim meeting is announced', - ) - annc.to = Recipient.objects.filter(slug__in=['ietf_announce','stream_announce']) - annc.cc = Recipient.objects.filter(slug__in=['group_mail_list',]) - - annc = MailTrigger.objects.create( - slug='interim_cancelled', - desc='Recipients when an interim meeting is cancelled', - ) - annc.to = Recipient.objects.filter(slug__in=['ietf_announce','stream_aanounce']) - annc.cc = Recipient.objects.filter(slug__in=['group_chairs','group_mail_list','logged_in_person']) - - -def reverse(apps, schema_editor): - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - Recipient=apps.get_model('mailtrigger','Recipient') - - MailTrigger.objects.filter(slug__in=['interim_announced','interim_cancelled']).delete() - Recipient.objects.filter(slug='group_stream_announce').delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailtrigger', '0006_auto_20160707_1933'), - ] - - operations = [ - migrations.RunPython(forward,reverse), - ] diff --git a/ietf/mailtrigger/migrations/0008_review_summary_triggers.py b/ietf/mailtrigger/migrations/0008_review_summary_triggers.py deleted file mode 100644 index 3dc0db581..000000000 --- a/ietf/mailtrigger/migrations/0008_review_summary_triggers.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - Recipient=apps.get_model('mailtrigger','Recipient') - - annc = MailTrigger.objects.create( - slug='review_assignments_summarized', - desc='Recipients when an review team secretary send a summary of open review assignments', - ) - annc.to = Recipient.objects.filter(slug__in=['group_mail_list',]) - annc.cc = [] - - -def reverse(apps, schema_editor): - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - MailTrigger.objects.filter(slug__in=['review_assignments_summarized']).delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('mailtrigger', '0007_add_interim_announce'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/mailtrigger/migrations/0009_review_sent.py b/ietf/mailtrigger/migrations/0009_review_sent.py deleted file mode 100644 index 1b8be8576..000000000 --- a/ietf/mailtrigger/migrations/0009_review_sent.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - Recipient=apps.get_model('mailtrigger','Recipient') - - Recipient.objects.create( - slug='review_team_mail_list', - desc="The review team's email list", - template="{{review_req.team.list_email}}" - ) - - Recipient.objects.create( - slug='review_doc_group_mail_list', - desc="The working group list for the document being reviewed", - template="{{review_req.doc.group.list_email}}" - ) - - Recipient.objects.create( - slug='review_doc_all_parties', - desc="The .all alias for the document being reviewed", - template="{% if review_req.doc.type_id == 'draft' %}<{{review_req.doc.name}}.all@ietf.org>{% endif %}" - ) - - Recipient.objects.create( - slug='ietf_general', - desc="The IETF general discussion list", - template="ietf@ietf.org" - ) - annc = MailTrigger.objects.create( - slug='review_completed', - desc='Recipients when an review is completed', - ) - annc.to = Recipient.objects.filter(slug__in=['review_team_mail_list',]) - annc.cc = Recipient.objects.filter(slug__in=['review_doc_all_parties','review_doc_group_mail_list','ietf_general']) - -def reverse(apps, schema_editor): - - MailTrigger=apps.get_model('mailtrigger','MailTrigger') - Recipient=apps.get_model('mailtrigger','Recipient') - - MailTrigger.objects.filter(slug='review_completed').delete() - Recipient.objects.filter(slug__in=['review_team_mail_list','review_doc_group_mail_list','review_doc_all_parties','ietf_general']).delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('mailtrigger', '0008_review_summary_triggers'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/mailtrigger/migrations/0010_auto_20161207_1104.py b/ietf/mailtrigger/migrations/0010_auto_20161207_1104.py deleted file mode 100644 index 3f257ebcf..000000000 --- a/ietf/mailtrigger/migrations/0010_auto_20161207_1104.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailtrigger', '0009_review_sent'), - ] - - operations = [ - migrations.AlterField( - model_name='mailtrigger', - name='cc', - field=models.ManyToManyField(related_name='used_in_cc', to='mailtrigger.Recipient', blank=True), - ), - migrations.AlterField( - model_name='mailtrigger', - name='to', - field=models.ManyToManyField(related_name='used_in_to', to='mailtrigger.Recipient', blank=True), - ), - ] diff --git a/ietf/mailtrigger/migrations/0011_group_added_comment.py b/ietf/mailtrigger/migrations/0011_group_added_comment.py deleted file mode 100644 index 444db5672..000000000 --- a/ietf/mailtrigger/migrations/0011_group_added_comment.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-12-28 11:11 -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - MailTrigger = apps.get_model('mailtrigger','MailTrigger') - Recipient = apps.get_model('mailtrigger', 'Recipient') - group_added_comment = MailTrigger.objects.create( - slug='group_added_comment', - desc="Recipients when a comment is added to a group's history", - ) - group_added_comment.to = Recipient.objects.filter(slug__in=[ - 'group_chairs', - 'group_secretaries', - 'group_responsible_directors', - ]) - -def reverse(apps, schema_editor): - MailTrigger = apps.get_model('mailtrigger','MailTrigger') - MailTrigger.objects.filter(slug='group_added_comment').delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailtrigger', '0010_auto_20161207_1104'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/meeting/migrations/0001_initial.py b/ietf/meeting/migrations/0001_initial.py index 65d2dde5b..ce77e14d6 100644 --- a/ietf/meeting/migrations/0001_initial.py +++ b/ietf/meeting/migrations/0001_initial.py @@ -1,238 +1,300 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations import datetime +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ietf.meeting.models +import ietf.utils.models +import ietf.utils.storage + class Migration(migrations.Migration): + initial = True + dependencies = [ - ('doc', '0001_initial'), ('group', '0001_initial'), ('name', '0001_initial'), + ('dbtemplate', '0001_initial'), ('person', '0001_initial'), + ('doc', '0001_initial'), ] operations = [ migrations.CreateModel( name='Constraint', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('day', models.DateTimeField(null=True, blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('day', models.DateTimeField(blank=True, null=True)), + ], + ), + migrations.CreateModel( + name='FloorPlan', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('short', models.CharField(default=b'', max_length=2)), + ('time', models.DateTimeField(default=datetime.datetime.now)), + ('order', models.SmallIntegerField()), + ('image', models.ImageField(blank=True, default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=ietf.meeting.models.floorplan_path)), + ], + ), + migrations.CreateModel( + name='ImportantDate', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField()), ], options={ + 'ordering': ['-meeting', 'date'], }, - bases=(models.Model,), ), migrations.CreateModel( name='Meeting', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('number', models.CharField(unique=True, max_length=64)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('number', models.CharField(max_length=64, unique=True)), ('date', models.DateField()), - ('city', models.CharField(max_length=255, blank=True)), - ('country', models.CharField(blank=True, max_length=2, choices=[('AX', 'Aaland Islands'), ('AF', 'Afghanistan'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua & Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia'), ('BA', 'Bosnia & Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('GB', 'Britain (UK)'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('CV', 'Cape Verde'), ('BQ', 'Caribbean Netherlands'), ('KY', 'Cayman Islands'), ('CF', 'Central African Rep.'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CD', 'Congo (Dem. Rep.)'), ('CG', 'Congo (Rep.)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('CI', "Cote d'Ivoire"), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Curacao'), ('CY', 'Cyprus'), ('CZ', 'Czech Republic'), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('TL', 'East Timor'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern & Antarctic Lands'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island & McDonald Islands'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', 'Korea (North)'), ('KR', 'Korea (South)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', 'Laos'), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macau'), ('MK', 'Macedonia'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia'), ('MD', 'Moldova'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar (Burma)'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RE', 'Reunion'), ('RO', 'Romania'), ('RU', 'Russia'), ('RW', 'Rwanda'), ('AS', 'Samoa (American)'), ('WS', 'Samoa (western)'), ('SM', 'San Marino'), ('ST', 'Sao Tome & Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia & the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('BL', 'St Barthelemy'), ('SH', 'St Helena'), ('KN', 'St Kitts & Nevis'), ('LC', 'St Lucia'), ('SX', 'St Maarten (Dutch part)'), ('MF', 'St Martin (French part)'), ('PM', 'St Pierre & Miquelon'), ('VC', 'St Vincent'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard & Jan Mayen'), ('SZ', 'Swaziland'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syria'), ('TW', 'Taiwan'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania'), ('TH', 'Thailand'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad & Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks & Caicos Is'), ('TV', 'Tuvalu'), ('UM', 'US minor outlying islands'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('US', 'United States'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VA', 'Vatican City'), ('VE', 'Venezuela'), ('VN', 'Vietnam'), ('VG', 'Virgin Islands (UK)'), ('VI', 'Virgin Islands (US)'), ('WF', 'Wallis & Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe')])), - ('time_zone', models.CharField(blank=True, max_length=255, choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montreal', b'America/Montreal'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santa_Isabel', b'America/Santa_Isabel'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Rangoon', b'Asia/Rangoon'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')])), - ('venue_name', models.CharField(max_length=255, blank=True)), + ('days', models.IntegerField(default=7, help_text=b'The number of days the meeting lasts', validators=[django.core.validators.MinValueValidator(1)])), + ('city', models.CharField(blank=True, max_length=255)), + ('country', models.CharField(blank=True, choices=[(b'', b''), ('AF', 'Afghanistan'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua & Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia'), ('BA', 'Bosnia & Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('GB', 'Britain (UK)'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('CV', 'Cape Verde'), ('BQ', 'Caribbean NL'), ('KY', 'Cayman Islands'), ('CF', 'Central African Rep.'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CD', 'Congo (Dem. Rep.)'), ('CG', 'Congo (Rep.)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Cura\xe7ao'), ('CY', 'Cyprus'), ('CZ', 'Czech Republic'), ('CI', "C\xf4te d'Ivoire"), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('TL', 'East Timor'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern & Antarctic Lands'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island & McDonald Islands'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', 'Korea (North)'), ('KR', 'Korea (South)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', 'Laos'), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macau'), ('MK', 'Macedonia'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia'), ('MD', 'Moldova'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar (Burma)'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RO', 'Romania'), ('RU', 'Russia'), ('RW', 'Rwanda'), ('RE', 'R\xe9union'), ('AS', 'Samoa (American)'), ('WS', 'Samoa (western)'), ('SM', 'San Marino'), ('ST', 'Sao Tome & Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia & the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('BL', 'St Barthelemy'), ('SH', 'St Helena'), ('KN', 'St Kitts & Nevis'), ('LC', 'St Lucia'), ('SX', 'St Maarten (Dutch)'), ('MF', 'St Martin (French)'), ('PM', 'St Pierre & Miquelon'), ('VC', 'St Vincent'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard & Jan Mayen'), ('SZ', 'Swaziland'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syria'), ('TW', 'Taiwan'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania'), ('TH', 'Thailand'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad & Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks & Caicos Is'), ('TV', 'Tuvalu'), ('UM', 'US minor outlying islands'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('US', 'United States'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VA', 'Vatican City'), ('VE', 'Venezuela'), ('VN', 'Vietnam'), ('VG', 'Virgin Islands (UK)'), ('VI', 'Virgin Islands (US)'), ('WF', 'Wallis & Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe'), ('AX', '\xc5land Islands')], max_length=2)), + ('time_zone', models.CharField(blank=True, choices=[(b'', b'---------'), (b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Punta_Arenas', b'America/Punta_Arenas'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Atyrau', b'Asia/Atyrau'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Famagusta', b'Asia/Famagusta'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yangon', b'Asia/Yangon'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Saratov', b'Europe/Saratov'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')], max_length=255)), + ('idsubmit_cutoff_day_offset_00', models.IntegerField(blank=True, default=13, help_text=b'The number of days before the meeting start date when the submission of -00 drafts will be closed.')), + ('idsubmit_cutoff_day_offset_01', models.IntegerField(blank=True, default=13, help_text=b'The number of days before the meeting start date when the submission of -01 drafts etc. will be closed.')), + ('idsubmit_cutoff_time_utc', models.DurationField(blank=True, default=datetime.timedelta(0, 86399), help_text=b'The time of day (UTC) after which submission will be closed. Use for example 23:59:59.')), + ('idsubmit_cutoff_warning_days', models.DurationField(blank=True, default=datetime.timedelta(21), help_text=b"How long before the 00 cutoff to start showing cutoff warnings. Use for example '21' or '21 days'.")), + ('submission_start_day_offset', models.IntegerField(blank=True, default=90, help_text=b'The number of days before the meeting start date after which meeting materials will be accepted.')), + ('submission_cutoff_day_offset', models.IntegerField(blank=True, default=26, help_text=b'The number of days after the meeting start date in which new meeting materials will be accepted.')), + ('submission_correction_day_offset', models.IntegerField(blank=True, default=50, help_text=b'The number of days after the meeting start date in which updates to existing meeting materials will be accepted.')), + ('venue_name', models.CharField(blank=True, max_length=255)), ('venue_addr', models.TextField(blank=True)), - ('break_area', models.CharField(max_length=255, blank=True)), - ('reg_area', models.CharField(max_length=255, blank=True)), - ('agenda_note', models.TextField(help_text=b'Text in this field will be placed at the top of the html agenda page for the meeting. HTML can be used, but will not validated.', blank=True)), - ('session_request_lock_message', models.CharField(max_length=255, blank=True)), + ('break_area', models.CharField(blank=True, max_length=255)), + ('reg_area', models.CharField(blank=True, max_length=255)), + ('agenda_note', models.TextField(blank=True, help_text=b'Text in this field will be placed at the top of the html agenda page for the meeting. HTML can be used, but will not be validated.')), + ('session_request_lock_message', models.CharField(blank=True, max_length=255)), + ('proceedings_final', models.BooleanField(default=False, help_text='Are the proceedings for this meeting complete?')), + ('acknowledgements', models.TextField(blank=True, help_text=b'Acknowledgements for use in meeting proceedings. Use ReStructuredText markup.')), + ('show_important_dates', models.BooleanField(default=False)), ], options={ - 'ordering': ['-date'], + 'ordering': ['-date', 'id'], }, - bases=(models.Model,), ), migrations.CreateModel( name='ResourceAssociation', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('icon', models.CharField(max_length=64)), ('desc', models.CharField(max_length=256)), - ('name', models.ForeignKey(to='name.RoomResourceName')), + ('name', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.RoomResourceName')), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='Room', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(default=datetime.datetime.now)), ('name', models.CharField(max_length=255)), - ('capacity', models.IntegerField(null=True, blank=True)), - ('meeting', models.ForeignKey(to='meeting.Meeting')), - ('resources', models.ManyToManyField(to='meeting.ResourceAssociation', blank=True)), + ('functional_name', models.CharField(blank=True, max_length=255)), + ('capacity', models.IntegerField(blank=True, null=True)), + ('x1', models.SmallIntegerField(blank=True, default=None, null=True)), + ('y1', models.SmallIntegerField(blank=True, default=None, null=True)), + ('x2', models.SmallIntegerField(blank=True, default=None, null=True)), + ('y2', models.SmallIntegerField(blank=True, default=None, null=True)), + ('floorplan', ietf.utils.models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='meeting.FloorPlan')), + ('meeting', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting')), + ('resources', models.ManyToManyField(blank=True, to='meeting.ResourceAssociation')), + ('session_types', models.ManyToManyField(blank=True, to='name.TimeSlotTypeName')), ], options={ + 'ordering': ['-meeting', 'name'], + }, + ), + migrations.CreateModel( + name='SchedTimeSessAssignment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('modified', models.DateTimeField(auto_now=True)), + ('notes', models.TextField(blank=True)), + ('badness', models.IntegerField(blank=True, default=0, null=True)), + ('pinned', models.BooleanField(default=False, help_text=b'Do not move session during automatic placement.')), + ('extendedfrom', ietf.utils.models.ForeignKey(default=None, help_text='Timeslot this session is an extension of.', null=True, on_delete=django.db.models.deletion.CASCADE, to='meeting.SchedTimeSessAssignment')), + ], + options={ + 'ordering': ['timeslot__time', 'timeslot__type__slug', 'session__group__parent__name', 'session__group__acronym', 'session__name'], }, - bases=(models.Model,), ), migrations.CreateModel( name='Schedule', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=16)), - ('visible', models.BooleanField(default=True, help_text='Make this agenda available to those who know about it')), - ('public', models.BooleanField(default=True, help_text='Make this agenda publically available')), - ('badness', models.IntegerField(null=True, blank=True)), - ('meeting', models.ForeignKey(to='meeting.Meeting', null=True)), - ('owner', models.ForeignKey(to='person.Person')), + ('visible', models.BooleanField(default=True, help_text='Make this agenda available to those who know about it.')), + ('public', models.BooleanField(default=True, help_text='Make this agenda publically available.')), + ('badness', models.IntegerField(blank=True, null=True)), + ('meeting', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting')), + ('owner', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ScheduledSession', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('modified', models.DateTimeField(default=datetime.datetime.now)), - ('notes', models.TextField(blank=True)), - ('badness', models.IntegerField(default=0, null=True, blank=True)), - ('pinned', models.BooleanField(default=False, help_text=b'Do not move session during automatic placement')), - ('extendedfrom', models.ForeignKey(default=None, to='meeting.ScheduledSession', help_text='Timeslot this session is an extension of', null=True)), - ('schedule', models.ForeignKey(related_name='assignments', to='meeting.Schedule')), - ], - options={ - 'ordering': ['timeslot__time', 'session__group__parent__name', 'session__group__acronym', 'session__name'], - }, - bases=(models.Model,), ), migrations.CreateModel( name='Session', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(help_text=b'Name of session, in case the session has a purpose rather than just being a group meeting', max_length=255, blank=True)), - ('short', models.CharField(help_text=b"Short version of 'name' above, for use in filenames", max_length=32, blank=True)), - ('attendees', models.IntegerField(null=True, blank=True)), - ('agenda_note', models.CharField(max_length=255, blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, help_text=b'Name of session, in case the session has a purpose rather than just being a group meeting.', max_length=255)), + ('short', models.CharField(blank=True, help_text=b"Short version of 'name' above, for use in filenames.", max_length=32)), + ('attendees', models.IntegerField(blank=True, null=True)), + ('agenda_note', models.CharField(blank=True, max_length=255)), ('requested', models.DateTimeField(default=datetime.datetime.now)), - ('requested_duration', models.IntegerField(default=0)), + ('requested_duration', models.DurationField(default=datetime.timedelta(0))), ('comments', models.TextField(blank=True)), - ('scheduled', models.DateTimeField(null=True, blank=True)), - ('modified', models.DateTimeField(default=datetime.datetime.now)), - ('group', models.ForeignKey(to='group.Group')), + ('scheduled', models.DateTimeField(blank=True, null=True)), + ('modified', models.DateTimeField(auto_now=True)), + ('remote_instructions', models.CharField(blank=True, max_length=1024)), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='SessionPresentation', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('rev', models.CharField(max_length=16, verbose_name=b'revision', blank=True)), - ('document', models.ForeignKey(to='doc.Document')), - ('session', models.ForeignKey(to='meeting.Session')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('rev', models.CharField(blank=True, max_length=16, null=True, verbose_name=b'revision')), + ('order', models.PositiveSmallIntegerField(default=0)), + ('document', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), + ('session', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Session')), ], options={ + 'ordering': ('order',), 'db_table': 'meeting_session_materials', }, - bases=(models.Model,), ), migrations.CreateModel( name='TimeSlot', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255)), ('time', models.DateTimeField()), - ('duration', models.IntegerField()), - ('show_location', models.BooleanField(default=True, help_text=b'Show location in agenda')), - ('modified', models.DateTimeField(default=datetime.datetime.now)), - ('location', models.ForeignKey(blank=True, to='meeting.Room', null=True)), - ('meeting', models.ForeignKey(to='meeting.Meeting')), - ('sessions', models.ManyToManyField(related_name='slots', to='meeting.Session', through='meeting.ScheduledSession', blank=True, help_text='Scheduled session, if any', null=True)), - ('type', models.ForeignKey(to='name.TimeSlotTypeName')), + ('duration', models.DurationField(default=datetime.timedelta(0))), + ('show_location', models.BooleanField(default=True, help_text=b'Show location in agenda.')), + ('modified', models.DateTimeField(auto_now=True)), + ('location', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='meeting.Room')), + ('meeting', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting')), + ('sessions', models.ManyToManyField(blank=True, help_text='Scheduled session, if any.', related_name='slots', through='meeting.SchedTimeSessAssignment', to='meeting.Session')), + ('type', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.TimeSlotTypeName')), ], options={ + 'ordering': ['-time', 'id'], }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='UrlResource', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('url', models.URLField(blank=True, null=True)), + ('name', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.RoomResourceName')), + ('room', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Room')), + ], ), migrations.AddField( model_name='session', name='materials', - field=models.ManyToManyField(to='doc.Document', through='meeting.SessionPresentation', blank=True), - preserve_default=True, + field=models.ManyToManyField(blank=True, through='meeting.SessionPresentation', to='doc.Document'), ), migrations.AddField( model_name='session', name='meeting', - field=models.ForeignKey(to='meeting.Meeting'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting'), ), migrations.AddField( model_name='session', name='requested_by', - field=models.ForeignKey(to='person.Person'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person'), ), migrations.AddField( model_name='session', name='resources', - field=models.ManyToManyField(to='meeting.ResourceAssociation'), - preserve_default=True, + field=models.ManyToManyField(blank=True, to='meeting.ResourceAssociation'), ), migrations.AddField( model_name='session', name='status', - field=models.ForeignKey(to='name.SessionStatusName'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.SessionStatusName'), ), migrations.AddField( - model_name='scheduledsession', + model_name='session', + name='type', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.TimeSlotTypeName'), + ), + migrations.AddField( + model_name='schedtimesessassignment', + name='schedule', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='assignments', to='meeting.Schedule'), + ), + migrations.AddField( + model_name='schedtimesessassignment', name='session', - field=models.ForeignKey(default=None, to='meeting.Session', help_text='Scheduled session', null=True), - preserve_default=True, + field=ietf.utils.models.ForeignKey(default=None, help_text='Scheduled session.', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='timeslotassignments', to='meeting.Session'), ), migrations.AddField( - model_name='scheduledsession', + model_name='schedtimesessassignment', name='timeslot', - field=models.ForeignKey(to='meeting.TimeSlot'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sessionassignments', to='meeting.TimeSlot'), ), migrations.AddField( model_name='meeting', name='agenda', - field=models.ForeignKey(related_name='+', blank=True, to='meeting.Schedule', null=True), - preserve_default=True, + field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='meeting.Schedule'), + ), + migrations.AddField( + model_name='meeting', + name='overview', + field=ietf.utils.models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='overview', to='dbtemplate.DBTemplate'), ), migrations.AddField( model_name='meeting', name='type', - field=models.ForeignKey(to='name.MeetingTypeName'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.MeetingTypeName'), + ), + migrations.AddField( + model_name='importantdate', + name='meeting', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting'), + ), + migrations.AddField( + model_name='importantdate', + name='name', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.ImportantDateName'), + ), + migrations.AddField( + model_name='floorplan', + name='meeting', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting'), ), migrations.AddField( model_name='constraint', name='meeting', - field=models.ForeignKey(to='meeting.Meeting'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting'), ), migrations.AddField( model_name='constraint', name='name', - field=models.ForeignKey(to='name.ConstraintName'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.ConstraintName'), ), migrations.AddField( model_name='constraint', name='person', - field=models.ForeignKey(blank=True, to='person.Person', null=True), - preserve_default=True, + field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Person'), ), migrations.AddField( model_name='constraint', name='source', - field=models.ForeignKey(related_name='constraint_source_set', to='group.Group'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='constraint_source_set', to='group.Group'), ), migrations.AddField( model_name='constraint', name='target', - field=models.ForeignKey(related_name='constraint_target_set', to='group.Group', null=True), - preserve_default=True, + field=ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='constraint_target_set', to='group.Group'), ), ] diff --git a/ietf/meeting/migrations/0002_auto_20150221_0947.py b/ietf/meeting/migrations/0002_auto_20150221_0947.py deleted file mode 100644 index 7d50996cd..000000000 --- a/ietf/meeting/migrations/0002_auto_20150221_0947.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='meeting', - name='idsubmit_cutoff_day_offset_00', - field=models.IntegerField(default=20, help_text=b'The number of days before the meeting start date when the submission of -00 drafts will be closed.'), - preserve_default=True, - ), - migrations.AddField( - model_name='meeting', - name='idsubmit_cutoff_day_offset_01', - field=models.IntegerField(default=13, help_text=b'The number of days before the meeting start date when the submission of -01 drafts etc. will be closed.'), - preserve_default=True, - ), - migrations.AddField( - model_name='meeting', - name='idsubmit_cutoff_time_utc', - field=models.CharField(max_length=20, default='86399.0', help_text=b'The time of day (UTC) after which submission will be closed. Use for example 23 hours, 59 minutes, 59 seconds.'), - preserve_default=True, - ), - migrations.AddField( - model_name='meeting', - name='idsubmit_cutoff_warning_days', - field=models.CharField(max_length=20, default='1814400.0', help_text=b'How long before the 00 cutoff to start showing cutoff warnings. Use for example 21 days or 3 weeks.'), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0003_auto_20150304_0738.py b/ietf/meeting/migrations/0003_auto_20150304_0738.py deleted file mode 100644 index ff5b4962e..000000000 --- a/ietf/meeting/migrations/0003_auto_20150304_0738.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0002_auto_20150221_0947'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='idsubmit_cutoff_day_offset_00', - field=models.IntegerField(default=13, help_text=b'The number of days before the meeting start date when the submission of -00 drafts will be closed.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='meeting', - name='idsubmit_cutoff_day_offset_01', - field=models.IntegerField(default=13, help_text=b'The number of days before the meeting start date when the submission of -01 drafts etc. will be closed.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='meeting', - name='idsubmit_cutoff_time_utc', - field=models.CharField(max_length=20, default='86399.0', help_text=b'The time of day (UTC) after which submission will be closed. Use for example 23 hours, 59 minutes, 59 seconds.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='meeting', - name='idsubmit_cutoff_warning_days', - field=models.CharField(max_length=20, default='1814400.0', help_text=b'How long before the 00 cutoff to start showing cutoff warnings. Use for example 21 days or 3 weeks.', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0004_auto_20150308_0446.py b/ietf/meeting/migrations/0004_auto_20150308_0446.py deleted file mode 100644 index e5b55180e..000000000 --- a/ietf/meeting/migrations/0004_auto_20150308_0446.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0003_auto_20150304_0738'), - ] - - operations = [ - migrations.AlterModelOptions( - name='scheduledsession', - options={'ordering': ['timeslot__time', 'timeslot__type__slug', 'session__group__parent__name', 'session__group__acronym', 'session__name']}, - ), - ] diff --git a/ietf/meeting/migrations/0005_auto_20150430_0847.py b/ietf/meeting/migrations/0005_auto_20150430_0847.py deleted file mode 100644 index 06fbf34ba..000000000 --- a/ietf/meeting/migrations/0005_auto_20150430_0847.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0004_auto_20150308_0446'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='agenda_note', - field=models.TextField(help_text=b'Text in this field will be placed at the top of the html agenda page for the meeting. HTML can be used, but will not be validated.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='schedule', - name='public', - field=models.BooleanField(default=True, help_text='Make this agenda publically available.'), - preserve_default=True, - ), - migrations.AlterField( - model_name='schedule', - name='visible', - field=models.BooleanField(default=True, help_text='Make this agenda available to those who know about it.'), - preserve_default=True, - ), - migrations.AlterField( - model_name='scheduledsession', - name='extendedfrom', - field=models.ForeignKey(default=None, to='meeting.ScheduledSession', help_text='Timeslot this session is an extension of.', null=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='scheduledsession', - name='pinned', - field=models.BooleanField(default=False, help_text=b'Do not move session during automatic placement.'), - preserve_default=True, - ), - migrations.AlterField( - model_name='scheduledsession', - name='session', - field=models.ForeignKey(default=None, to='meeting.Session', help_text='Scheduled session.', null=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='session', - name='name', - field=models.CharField(help_text=b'Name of session, in case the session has a purpose rather than just being a group meeting.', max_length=255, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='session', - name='short', - field=models.CharField(help_text=b"Short version of 'name' above, for use in filenames.", max_length=32, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='timeslot', - name='sessions', - field=models.ManyToManyField(related_name='slots', to='meeting.Session', through='meeting.ScheduledSession', blank=True, help_text='Scheduled session, if any.', null=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='timeslot', - name='show_location', - field=models.BooleanField(default=True, help_text=b'Show location in agenda.'), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0006_auto_20150318_1116.py b/ietf/meeting/migrations/0006_auto_20150318_1116.py deleted file mode 100644 index 1049d26d9..000000000 --- a/ietf/meeting/migrations/0006_auto_20150318_1116.py +++ /dev/null @@ -1,144 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import datetime -from django.db import migrations - - -def backfill_91_other_meetings(apps, schema_editor): - - Meeting = apps.get_model('meeting', 'Meeting') - Schedule = apps.get_model('meeting', 'Schedule') - ScheduledSession = apps.get_model('meeting', 'ScheduledSession') - Room = apps.get_model('meeting', 'Room') - Group = apps.get_model('group', 'Group') - Person = apps.get_model('person', 'Person') - - ietf91 = Meeting.objects.filter(number=91).first() - - if not ietf91: - print "IETF91 not found, no data changed" - else: - agenda91 = Schedule.objects.get(meeting=ietf91,pk=ietf91.agenda.pk) - - south_pacific_1 = Room.objects.get(meeting=ietf91,name="South Pacific 1") - south_pacific_2 = Room.objects.get(meeting=ietf91,name="South Pacific 2") - rainbow_12 = Room.objects.get(meeting=ietf91,name="Rainbow Suite 1/2") - lehua_suite = Room.objects.get(meeting=ietf91,name="Lehua Suite") - kahili = Room.objects.get(meeting=ietf91,name="Kahili") - coral_2 = Room.objects.get(meeting=ietf91,name="Coral 2") - - south_pacific_3 = Room.objects.create(meeting=ietf91,name="South Pacific 3",capacity=20) - rainbow_suite_3 = Room.objects.create(meeting=ietf91,name="Rainbow Suite 3",capacity=20) - rainbow_23 = Room.objects.create(meeting=ietf91,name="Rainbow Suite 2/3",capacity=210) - south_pacific_34 = Room.objects.create(meeting=ietf91,name="South Pacific 3/4",capacity=210) - iolani_67 = Room.objects.create(meeting=ietf91,name="Iolani 6/7",capacity=40) - sea_pearl_12 = Room.objects.create(meeting=ietf91,name="Sea Pearl 1/2",capacity=40) - sea_pearl_2 = Room.objects.create(meeting=ietf91,name="Sea Pearl 2",capacity=20) - coral_lounge = Room.objects.create(meeting=ietf91,name="Coral Lounge", capacity=1200) - hibiscus = Room.objects.create(meeting=ietf91,name="Hibiscus", capacity=20) - tiare = Room.objects.create(meeting=ietf91,name="Tiare Suite", capacity=20) - - iesg = Group.objects.get(acronym='iesg') - iab = Group.objects.get(acronym='iab') - rsoc = Group.objects.get(acronym='rsoc') - iaoc = Group.objects.get(acronym='iaoc') - nomcom = Group.objects.get(acronym='nomcom2014') - isoc = Group.objects.get(acronym='isoc') - secr = Group.objects.get(acronym='secretariat') - isocbot = Group.objects.create(acronym='isocbot',name="Internet Society Board of Trustees",state_id='active',type_id='isoc',parent=isoc) - isocfell = Group.objects.create(acronym='isocfell',name="Internet Society Fellows",state_id='active',type_id='isoc',parent=isoc) - - system = Person.objects.get(name='(System)') - - for d, h, m, duration, type_id, groups, room, slotname, label in [ - ( 9, 8, 0, 120, 'offagenda', [secr], rainbow_suite_3, 'WEIRDS Interop', 'WEIRDS Interop'), - ( 9, 8, 30, 90, 'lead', [iesg], south_pacific_2, 'Breakfast', None), - ( 9, 9, 0, 240, 'offagenda', [secr], lehua_suite, 'RMCAT Interim', 'RMCAT Interim Meeting'), - ( 9, 9, 0, 60, 'lead', [nomcom], iolani_67, 'Breakfast', 'Nomcom Breakfast'), - ( 9, 9, 0, 150, 'lead', [iesg], south_pacific_2, 'Meeting', None), - ( 9, 9, 0, 360, 'offagenda', [secr], hibiscus, 'Meeting', 'RootOPS'), - ( 9, 9, 30, 360, 'offagenda', [secr], kahili, 'TLS Interim', 'TLS WG Interim'), - ( 9, 11, 0, 480, 'offagenda', [secr], coral_lounge, 'T-Shirt Distribution', 'T-shirt Distribution'), - ( 9, 11, 30, 150, 'lead', [iesg], south_pacific_2, 'Lunch', 'IESG Lunch with the IAB'), - ( 9, 11, 30, 150, 'lead', [iab], south_pacific_2, 'Lunch', 'IAB Lunch with the IESG'), - ( 9, 12, 0, 360, 'offagenda', [secr], south_pacific_1, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 9, 14, 0, 180, 'lead', [iab], south_pacific_2, 'Meeting', None), - ( 9, 16, 0, 120, 'offagenda', [secr], coral_2, 'Meeting', 'Web Object Encryption'), - ( 9, 17, 0, 120, 'offagenda', [secr], sea_pearl_12, 'Reception', "Companion's Reception"), # Should this appear on agenda? - ( 9, 19, 0, 180, 'offagenda', [isocfell], rainbow_23, 'Dinner', 'ISOC Fellows Reception/Dinner'), - ( 9, 19, 0, 180, 'offagenda', [secr], lehua_suite, 'Meeting', 'Huawei'), - ( 9, 21, 0, 180, 'lead', [secr], sea_pearl_12, 'Gathering', 'AMS/IESG/IAB/IAOC Gathering'), - ( 10, 0, 0, 1440, 'offagenda', [secr], south_pacific_1, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 10, 7, 0, 120, 'lead', [iesg], south_pacific_2, 'Breakfast', 'IESG Breakfast with the IAB'), - ( 10, 7, 0, 120, 'lead', [iab], south_pacific_2, 'Breakfast', 'IAB Breakfast with the IESG'), - ( 10, 7, 0, 120, 'lead', [nomcom], iolani_67, 'Breakfast', 'Nomcom Breakfast'), - ( 10, 8, 0, 600, 'offagenda', [secr], coral_lounge, 'T-shirt Distribution', 'T-shirt Distribution'), - ( 10, 11, 30, 90, 'offagenda', [secr], south_pacific_2, 'Meeting', 'OPS Directorate Meeting'), - ( 10, 11, 30, 90, 'offagenda', [secr], rainbow_suite_3, 'Meeting', 'IETF/3GPP Meeting'), - ( 10, 11, 30, 90, 'offagenda', [secr], lehua_suite, 'Meeting', 'RTG Area Meeting'), - ( 10, 19, 0, 240, 'offagenda', [secr], south_pacific_2, 'Meeting', 'Huawei'), - ( 11, 0, 0, 1440, 'offagenda', [secr], south_pacific_1, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 11, 7, 0, 120, 'lead', [iesg], south_pacific_2, 'Breakfast', None), - ( 11, 7, 0, 120, 'lead', [nomcom], iolani_67, 'Breakfast', 'Nomcom Breakfast'), - ( 11, 7, 0, 120, 'lead', [iab], rainbow_suite_3, 'Breakfast', None), - ( 11, 7, 0, 60, 'lead', [iab], tiare, 'Meeting', 'Vendor Selection Committee Meeting'), - ( 11, 8, 0, 600, 'offagenda', [secr], coral_lounge, 'T-shirt Distribution', 'T-shirt Distribution'), - ( 11, 9, 0, 90, 'offagenda', [secr], south_pacific_2, 'Meeting', 'DHCPv6bis Team Meeting'), - ( 11, 11, 30, 90, 'offagenda', [secr], south_pacific_2, 'Meeting', 'SECdir Meeting'), - ( 11, 11, 30, 90, 'offagenda', [secr], rainbow_suite_3, 'Lunch', 'RSAG/ISEB Lunch'), - ( 11, 16, 0, 240, 'offagenda', [secr], south_pacific_2, 'Meeting', 'Verisign Corporate Meeting'), - ( 12, 0, 0, 1440, 'offagenda', [secr], south_pacific_1, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 12, 7, 30, 90, 'lead', [iaoc], south_pacific_3, 'Breakfast', None), - ( 12, 7, 0, 120, 'lead', [nomcom], iolani_67, 'Breakfast', 'Nomcom Breakfast'), - ( 12, 8, 0, 540, 'offagenda', [secr], coral_lounge, 'T-shirt Distribution', 'T-shirt Distribution'), - ( 12, 8, 0, 240, 'offagenda', [secr], south_pacific_2, 'Meeting', 'DIME WG'), - ( 12, 11, 30, 90, 'offagenda', [secr], rainbow_suite_3, 'Lunch', 'RFC Editor Lunch'), - ( 12, 15, 0, 120, 'offagenda', [secr], south_pacific_2, 'Meeting', 'YANG Advice'), - ( 12, 17, 0, 240, 'offagenda', [secr], rainbow_suite_3, 'Meeting', 'Huawei (POC Wil Liu)'), - ( 12, 20, 0, 150, 'offagenda', [secr], south_pacific_2, 'Meeting', 'ICANN SSAC'), - ( 13, 0, 0, 1440, 'offagenda', [secr], south_pacific_1, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 13, 7, 0, 120, 'lead', [iab], rainbow_suite_3, 'Breakfast', None), - ( 13, 7, 0, 120, 'lead', [nomcom], iolani_67, 'Breakfast', 'Nomcom Breakfast'), - ( 13, 11, 30, 90, 'lead', [iab], sea_pearl_2, 'Meeting', 'IAB Liaison Oversight'), - ( 13, 11, 30, 90, 'lead', [rsoc], rainbow_suite_3, 'Lunch', None), - ( 14, 0, 0, 900, 'offagenda', [secr], south_pacific_1, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 14, 7, 0, 120, 'lead', [nomcom], iolani_67, 'Breakfast', 'Nomcom Breakfast'), - ( 14, 11, 0, 360, 'offagenda', [isoc], south_pacific_34,'Meeeting', 'ISOC AC Meeting'), - ( 14, 13, 30, 90, 'lead', [iesg], south_pacific_2, 'Lunch', 'IESG Lunch with the IAB'), - ( 14, 13, 30, 90, 'lead', [iab], south_pacific_2, 'Lunch', 'IAB Lunch with the IESG'), - ( 14, 18, 0, 60, 'offagenda', [isocbot], rainbow_23, 'Reception', 'ISOC Board Reception for IETF Leadership'), - ( 14, 19, 0, 180, 'offagenda', [isocbot], rainbow_23, 'Dinner', 'ISOC Board Dinner for IETF Leadership'), - ( 15, 8, 0, 60, 'offagenda', [isocbot], rainbow_12, 'Breakfast', 'ISOC Board of Trustees Breakfast'), - ( 15, 8, 0, 540, 'offagenda', [isocbot], south_pacific_34,'Meeting', 'ISOC Board of Trustees Meeting'), - ( 15, 12, 0, 60, 'offagenda', [isocbot], rainbow_12, 'Lunch', 'ISOC Board of Trustees Lunch'), - ( 16, 8, 0, 60, 'offagenda', [isocbot], rainbow_12, 'Breakfast', 'ISOC Board of Trustees Breakfast'), - ( 16, 8, 0, 540, 'offagenda', [isocbot], south_pacific_34,'Meeting', 'ISOC Board of Trustees Meeting'), - ( 16, 12, 0, 60, 'offagenda', [isocbot], rainbow_12, 'Lunch', 'ISOC Board of Trustees Lunch'), - ]: - ts = ietf91.timeslot_set.create(type_id=type_id, name=slotname, - time=datetime.datetime(2014,11,d,h,m,0), - duration=datetime.timedelta(minutes=duration), - location=room,show_location=(type_id not in ['lead','offagenda'])) - for group in groups: - session = ietf91.session_set.create(name= label or "%s %s"%(group.acronym.upper(),slotname), - group=group, attendees=25, - requested=datetime.datetime(2014,11,1,0,0,0), - requested_by=system, status_id='sched') - ScheduledSession.objects.create(schedule=agenda91, timeslot=ts, session=session) - - - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0005_auto_20150430_0847'), - ('name', '0004_auto_20150318_1140'), - ('group', '0004_auto_20150430_0847'), - ('person', '0004_auto_20150308_0440'), - ] - - operations = [ - migrations.RunPython(backfill_91_other_meetings) - ] diff --git a/ietf/meeting/migrations/0007_auto_20150429_1224.py b/ietf/meeting/migrations/0007_auto_20150429_1224.py deleted file mode 100644 index 43717f149..000000000 --- a/ietf/meeting/migrations/0007_auto_20150429_1224.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - -def extract_session_type_values(apps, schema_editor): - - Session = apps.get_model('meeting', 'Session') - - for s in Session.objects.all(): - t = s.scheduledsession_set.filter(schedule=models.F('schedule__meeting__agenda')).first() - if t and t.timeslot.type.slug != 'session': - s.type = t.timeslot.type - s.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0004_auto_20150318_1140'), - ('meeting', '0006_auto_20150318_1116'), - ] - - operations = [ - migrations.AddField( - model_name='session', - name='type', - field=models.ForeignKey(default='session', to='name.TimeSlotTypeName'), - preserve_default=False, - ), - migrations.RunPython(extract_session_type_values), - ] diff --git a/ietf/meeting/migrations/0008_auto_20150429_1346.py b/ietf/meeting/migrations/0008_auto_20150429_1346.py deleted file mode 100644 index 24485e2fd..000000000 --- a/ietf/meeting/migrations/0008_auto_20150429_1346.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - -def extract_room_session_type_values(apps, schema_editor): - - Room = apps.get_model('meeting', 'Room') - - for r in Room.objects.all(): - for ts in r.timeslot_set.all(): - if ts.scheduledsession_set.filter(schedule=models.F('schedule__meeting__agenda')): - r.session_types.add(ts.type) - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0004_auto_20150318_1140'), - ('meeting', '0007_auto_20150429_1224'), - ] - - operations = [ - migrations.AddField( - model_name='room', - name='session_types', - field=models.ManyToManyField(to='name.TimeSlotTypeName', blank=True), - preserve_default=True, - ), - migrations.RunPython(extract_room_session_type_values), - ] diff --git a/ietf/meeting/migrations/0009_room_functional_name.py b/ietf/meeting/migrations/0009_room_functional_name.py deleted file mode 100644 index 4170f3b59..000000000 --- a/ietf/meeting/migrations/0009_room_functional_name.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0008_auto_20150429_1346'), - ] - - operations = [ - migrations.AddField( - model_name='room', - name='functional_name', - field=models.CharField(default='', max_length=255, blank=True), - preserve_default=False, - ), - ] diff --git a/ietf/meeting/migrations/0010_auto_20150501_0732.py b/ietf/meeting/migrations/0010_auto_20150501_0732.py deleted file mode 100644 index 7c52f7634..000000000 --- a/ietf/meeting/migrations/0010_auto_20150501_0732.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def add_91_room_functional_names(apps, schema_editor): - - map = { - 'Hibiscus': 'Breakout 3', - 'South Pacific 2': 'Meeting Room #6', - 'South Pacific 1': 'Terminal Room', - 'Coral 1': 'Breakout 4', - 'Coral 2': 'Breakout 5', - 'Coral 5': 'Breakout 6', - 'Coral 4': 'Breakout 7', - 'Coral 3': 'Breakout 8', - 'Great Lawn': 'Welcome Reception', - 'Rainbow Suite': 'Not Used', - 'Lehua Suite': 'Breakout 1', - 'Kahili': 'Breakout 2', - 'Rainbow Suite 1/2': 'Meeting Room #2 (IESG Meeting Room)', - 'Village Green': 'Meet and Greet', - 'South Pacific 3': 'Meeting Room #4 (IAOC/IAD Office)', - 'Rainbow Suite 3': 'Meeting Room #7', - 'Rainbow Suite 2/3': 'ISOC Dinner', - 'South Pacific 3/4': 'ISOC AC Meeting', - 'Iolani 6/7': 'Meeting Room #5 (NomCom Office)', - 'Sea Pearl 1/2': 'Reception', - 'Sea Pearl 2': 'Meeting Room #1 (IAB Meeting Room)', - 'Coral Lounge': 'Registration Area and Breaks', - 'Tiare Suite': 'Meeting Room #8 (RFC Office)', - } - - Room = apps.get_model('meeting', 'Room') - - for name,functional_name in map.items(): - Room.objects.filter(meeting__number=91,name=name).update(functional_name=functional_name) - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0009_room_functional_name'), - ] - - operations = [ - migrations.RunPython(add_91_room_functional_names), - ] - diff --git a/ietf/meeting/migrations/0011_ietf92_meetings.py b/ietf/meeting/migrations/0011_ietf92_meetings.py deleted file mode 100644 index 20b20caa6..000000000 --- a/ietf/meeting/migrations/0011_ietf92_meetings.py +++ /dev/null @@ -1,195 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import datetime -from django.db import migrations - - -def backfill_92_other_meetings(apps, schema_editor): - - Meeting = apps.get_model('meeting', 'Meeting') - Schedule = apps.get_model('meeting', 'Schedule') - ScheduledSession = apps.get_model('meeting', 'ScheduledSession') - Room = apps.get_model('meeting', 'Room') - Session = apps.get_model('meeting', 'Session') - Group = apps.get_model('group', 'Group') - Person = apps.get_model('person', 'Person') - - ietf92 = Meeting.objects.filter(number=92).first() - - if not ietf92: - print "IETF92 not found, no data changed" - else: - - # Clear out one orphaned ill-configured Session object - qs = Session.objects.filter(meeting__number=92,name__icontains='beverage break').exclude(type_id='break') - if qs.count()==1: - qs.delete() - - agenda92 = Schedule.objects.get(meeting=ietf92,pk=ietf92.agenda.pk) - - map_existing = { - 'Regency Ballroom': 'Lounge', - 'Garden Terrace Level': 'Meet and Greet', - 'Royal': 'Breakout 1', - 'Continental': 'Breakout 2', - 'Far East': 'Breakout 3', - 'Oak ': 'Breakout 4', - 'Parisian': 'Breakout 5', - 'Venetian': 'Breakout 6', - 'Gold': 'Breakout 7', - 'International': 'Breakout 8', - 'Brasserie': 'Terminal Room', - 'State': 'Office #3 (Secretariat Office)', - 'French': 'Meeting Room #2 (IESG Meeting Room)', - } - - for name,functional_name in map_existing.items(): - Room.objects.filter(meeting__number=92,name=name).update(functional_name=functional_name) - - regency = Room.objects.get(meeting=ietf92,name='Regency Ballroom') - garden = Room.objects.get(meeting=ietf92,name='Garden Terrace Level') - royal = Room.objects.get(meeting=ietf92,name='Royal') - continental = Room.objects.get(meeting=ietf92,name='Continental') - far_east = Room.objects.get(meeting=ietf92,name='Far East') - oak = Room.objects.get(meeting=ietf92,name='Oak ') - #parisian = Room.objects.get(meeting=ietf92,name='Parisian') - #venetian = Room.objects.get(meeting=ietf92,name='Venetian') - #gold = Room.objects.get(meeting=ietf92,name='Gold') - #international = Room.objects.get(meeting=ietf92,name='International') - brasserie = Room.objects.get(meeting=ietf92,name='Brasserie') - state = Room.objects.get(meeting=ietf92,name='State') - #french = Room.objects.get(meeting=ietf92,name='French') - - executive = Room.objects.create(meeting=ietf92,name='Executive',functional_name='Meeting Room #4 (IAOC/IAD)',capacity=20) - regency_foyer = Room.objects.create(meeting=ietf92,name='Regency Foyer',functional_name='Registration',capacity=1200) - florentine = Room.objects.create(meeting=ietf92,name='Florentine',functional_name='Meeting Room #1 (IAB)', capacity=40) - pavilion = Room.objects.create(meeting=ietf92,name='Pavilion',functional_name='Meeting Room #6', capacity=80) - terrace = Room.objects.create(meeting=ietf92,name='Terrace',functional_name='Meeting Room #7', capacity=80) - panorama = Room.objects.create(meeting=ietf92,name='Panorama',functional_name='Companion Reception', capacity=200) - - regency.session_types.add('offagenda') - pavilion.session_types.add('offagenda') - pavilion.session_types.add('lead') - garden.session_types.add('lead') - panorama.session_types.add('offagenda') - executive.session_types.add('lead') - executive.session_types.add('offagenda') - regency_foyer.session_types.add('offagenda') - oak.session_types.add('offagenda') - continental.session_types.add('offagenda') - state.session_types.add('offagenda') - florentine.session_types.add('offagenda') - terrace.session_types.add('lead') - terrace.session_types.add('offagenda') - far_east.session_types.add('offagenda') - brasserie.session_types.add('offagenda') - royal.session_types.add('offagenda') - - iesg = Group.objects.get(acronym='iesg') - iab = Group.objects.get(acronym='iab') - iaoc = Group.objects.get(acronym='iaoc') - secr = Group.objects.get(acronym='secretariat') - - system = Person.objects.get(name='(System)') - - for d, h, m, duration, type_id, groups, room, slotname, label in [ - ( 20, 13, 0, 480, 'offagenda', [secr], brasserie, 'Setup', 'Hackathon: Setup'), - ( 20, 8, 0, 540, 'offagenda', [secr], executive, 'Meeting', 'DNS OARC Meeting'), - ( 21, 8, 0, 540, 'offagenda', [secr], executive, 'Meeting', 'DNS OARC Meeting'), - ( 22, 12, 0, 720, 'offagenda', [secr], brasserie, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 22, 11, 0, 480, 'offagenda', [secr], regency_foyer, 'T-Shirt Distribution', 'T-shirt Distribution'), - ( 22, 19, 0, 120, 'offagenda', [secr], state, 'Meeting', 'CJK Generation Panel coordination informal meeting'), - ( 22, 19, 0, 120, 'offagenda', [iab], florentine, 'Meeting', 'IAB PrivSec program'), - ( 22, 8, 30, 90, 'lead', [iesg], pavilion, 'Breakfast', None), - ( 22, 9, 0, 150, 'lead', [iesg], pavilion, 'Meeting', None), - ( 22, 11, 30, 150, 'lead', [iab], pavilion, 'Lunch', 'IAB Lunch with the IESG'), - ( 22, 11, 30, 150, 'lead', [iesg], pavilion, 'Lunch', 'IESG Lunch with the IAB'), - ( 22, 14, 0, 180, 'lead', [iab], pavilion, 'Meeting', None), - ( 22, 9, 0, 480, 'offagenda', [secr], terrace, 'Meeting', 'RootOPS'), - ( 22, 16, 30, 60, 'offagenda', [secr], panorama, 'Reception', "Companion's Reception"), # Should this appear on agenda? - ( 22, 21, 0, 180, 'lead', [secr], garden, 'Gathering', 'AMS/IESG/IAB/IAOC Gathering'), - ( 22, 9, 0, 480, 'offagenda', [secr], royal, 'ICNRG', 'ICNRG'), - ( 22, 19, 0, 180, 'offagenda', [secr], royal, 'Meeting', 'Huawei'), - ( 22, 12, 30, 240, 'offagenda', [secr], continental, 'Meeting', 'Verisign ROA Workshop'), - ( 22, 15, 15, 165, 'offagenda', [secr], far_east, 'Meeting', 'RSSAC'), - ( 22, 9, 0, 150, 'offagenda', [secr], oak, 'Meeting', 'Ericsson'), - ( 23, 0, 0, 1440, 'offagenda', [secr], brasserie, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 23, 8, 0, 600, 'offagenda', [secr], regency_foyer, 'T-Shirt Distribution', 'T-shirt Distribution'), - ( 23, 0, 0, 1440, 'offagenda', [secr], regency, 'Lounge', 'Lounge'), - ( 23, 11, 30, 180, 'offagenda', [secr], executive, 'Lunch', 'ICANN Lunch'), - ( 23, 7, 0, 120, 'lead', [iesg], pavilion, 'Breakfast', 'IESG Breakfast with the IAB'), - ( 23, 7, 0, 120, 'lead', [iab], pavilion, 'Breakfast', 'IAB Breakfast with the IESG'), - ( 23, 11, 30, 90, 'offagenda', [secr], pavilion, 'Meeting', 'OPS Directorate Meeting'), - ( 23, 19, 0, 120, 'offagenda', [secr], pavilion, 'Meeting', 'ACE'), - ( 23, 7, 30, 90, 'offagenda', [secr], terrace, 'Meeting', 'NRO ECG'), - ( 23, 11, 30, 90, 'offagenda', [secr], terrace, 'Meeting', 'IETF/3GPP Meeting'), - ( 23, 19, 0, 120, 'offagenda', [secr], terrace, 'Meeting', 'I2NSF'), - ( 23, 18, 50, 60, 'offagenda', [secr], royal, 'Meeting', 'Captive Portal Bar BOF'), - ( 24, 0, 0, 1440, 'offagenda', [secr], brasserie, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 24, 8, 0, 600, 'offagenda', [secr], regency_foyer, 'T-Shirt Distribution', 'T-shirt Distribution'), - ( 24, 0, 0, 1440, 'offagenda', [secr], regency, 'Lounge', 'Lounge'), - ( 24, 11, 30, 90, 'offagenda', [secr], state, 'Meeting', 'HIAPS'), - ( 24, 16, 30, 120, 'offagenda', [secr], state, 'Meeting', 'PDF Draft Review'), - ( 24, 7, 0, 120, 'lead', [iesg], pavilion, 'Breakfast', None), - ( 24, 11, 30, 90, 'offagenda', [secr], pavilion, 'Meeting', 'SECdir Meeting'), - ( 24, 7, 0, 120, 'lead', [iab], terrace, 'Breakfast', None), - ( 24, 9, 0, 120, 'offagenda', [secr], terrace, 'Meeting', 'ICNN DRZK Design Team'), - ( 24, 11, 30, 90, 'offagenda', [secr], terrace, 'Lunch', 'RSAG/ISEB Lunch'), - ( 24, 13, 0, 120, 'offagenda', [secr], terrace, 'Meeting', 'SACM'), - ( 24, 15, 0, 90, 'offagenda', [secr], terrace, 'Meeting', 'RSOC Meeting'), - ( 24, 17, 30, 60, 'offagenda', [secr], terrace, 'Meeting', 'SACM'), - ( 24, 11, 30, 90, 'offagenda', [secr], royal, 'Meeting', 'IoT Directorate'), - ( 25, 0, 0, 1440, 'offagenda', [secr], brasserie, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 25, 8, 0, 600, 'offagenda', [secr], regency_foyer, 'T-Shirt Distribution', 'T-shirt Distribution'), - ( 25, 0, 0, 1440, 'offagenda', [secr], regency, 'Lounge', 'Lounge'), - ( 25, 8, 0, 60, 'offagenda', [secr], state, 'Meeting', 'SFC Control Plane Offline Discussion'), - ( 25, 19, 0, 240, 'offagenda', [secr], state, 'Meeting', 'WWG'), - ( 25, 8, 0, 60, 'offagenda', [secr], florentine, 'Meeting', 'IAB Name Resolution'), - ( 25, 6, 45, 135, 'lead', [iaoc], executive, 'Breakfast', None), - ( 25, 11, 30, 90, 'offagenda', [secr], pavilion, 'Meeting', 'RMCAT'), - ( 25, 19, 0, 120, 'offagenda', [secr], pavilion, 'Meeting', 'I2NSF'), - ( 25, 8, 0, 60, 'offagenda', [secr], terrace, 'Meeting', 'IETF/IEEE 802 Coordination'), - ( 25, 11, 30, 90, 'offagenda', [secr], terrace, 'Lunch', 'RFC Editor Lunch'), - ( 25, 19, 30, 120, 'offagenda', [secr], terrace, 'Dinner', 'SSAC Dinner'), - ( 26, 0, 0, 1440, 'offagenda', [secr], brasserie, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 26, 8, 0, 600, 'offagenda', [secr], regency_foyer, 'T-Shirt Distribution', 'T-shirt Distribution'), - ( 26, 0, 0, 1440, 'offagenda', [secr], regency, 'Lounge', 'Lounge'), - ( 26, 7, 30, 90, 'offagenda', [secr], state, 'Breakfast', 'EDU Team Breakfast'), - ( 26, 14, 0, 120, 'offagenda', [secr], state, 'Meeting', 'JJB'), - ( 26, 11, 30, 90, 'offagenda', [secr], florentine, 'Meeting', 'IAB Liaison Oversight'), - ( 26, 18, 0, 150, 'offagenda', [secr], pavilion, 'Meeting', '6LO Security Discussion'), - ( 26, 7, 0, 120, 'lead', [iab], terrace, 'Breakfast', None), - ( 26, 17, 40, 60, 'offagenda', [secr], terrace, 'Meeting', 'SACM'), - ( 26, 19, 30, 150, 'offagenda', [secr], royal, 'Meeting', 'Lavabit'), - ( 27, 0, 0, 900, 'offagenda', [secr], brasserie, 'Terminal Room', 'Terminal Room Open to Attendees'), - ( 27, 7, 30, 90, 'offagenda', [secr], executive, 'Meeting', 'Post-Con with Ray'), - ( 27, 7, 30, 75, 'offagenda', [secr], state, 'Breakfast', 'Gen-art'), - ( 27, 13, 30, 90, 'lead', [iab], pavilion, 'Lunch', 'IAB Lunch with the IESG'), - ( 27, 13, 30, 90, 'lead', [iesg], pavilion, 'Lunch', 'IESG Lunch with the IAB'), - ]: - - ts = ietf92.timeslot_set.create(type_id=type_id, name=slotname, - time=datetime.datetime(2015,3,d,h,m,0), - duration=datetime.timedelta(minutes=duration), - location=room,show_location=(type_id not in ['lead','offagenda'])) - for group in groups: - session = ietf92.session_set.create(name= label or "%s %s"%(group.acronym.upper(),slotname), - group=group, attendees=25, - requested=datetime.datetime(2014,11,1,0,0,0), - requested_by=system, status_id='sched',type_id=type_id) - ScheduledSession.objects.create(schedule=agenda92, timeslot=ts, session=session) - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0010_auto_20150501_0732'), - ('name', '0004_auto_20150318_1140'), - ('group', '0004_auto_20150430_0847'), - ('person', '0004_auto_20150308_0440'), - ] - - operations = [ - migrations.RunPython(backfill_92_other_meetings) - ] diff --git a/ietf/meeting/migrations/0012_auto_20151026_1406.py b/ietf/meeting/migrations/0012_auto_20151026_1406.py deleted file mode 100644 index 002532664..000000000 --- a/ietf/meeting/migrations/0012_auto_20151026_1406.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0011_ietf92_meetings'), - ] - - operations = [ - migrations.AlterField( - model_name='scheduledsession', - name='session', - field=models.ForeignKey(related_name='timeslotassignments', default=None, to='meeting.Session', help_text='Scheduled session.', null=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='scheduledsession', - name='timeslot', - field=models.ForeignKey(related_name='sessionassignments', to='meeting.TimeSlot'), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0013_auto_20151026_1408.py b/ietf/meeting/migrations/0013_auto_20151026_1408.py deleted file mode 100644 index a39501ed6..000000000 --- a/ietf/meeting/migrations/0013_auto_20151026_1408.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import datetime - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0012_auto_20151026_1406'), - ] - - operations = [ - migrations.CreateModel( - name='Dummy', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('modified', models.DateTimeField(default=datetime.datetime.now)), - ('notes', models.TextField(blank=True)), - ('badness', models.IntegerField(default=0, null=True, blank=True)), - ('pinned', models.BooleanField(default=False, help_text=b'Do not move session during automatic placement.')), - ('extendedfrom', models.ForeignKey(default=None, to='self', help_text='Timeslot this session is an extension of.', null=True)), - ('schedule', models.ForeignKey(related_name='assignments', to='meeting.Schedule')), - ('session', models.ForeignKey(related_name='timeslotassignments', default=None, to='meeting.Session', help_text='Scheduled session.', null=True)), - ('timeslot', models.ForeignKey(related_name='sessionassignments', to='meeting.TimeSlot')), - ], - options={ - 'ordering': ['timeslot__time', 'timeslot__type__slug', 'session__group__parent__name', 'session__group__acronym', 'session__name'], - }, - bases=(models.Model,), - ), - migrations.AlterField( - model_name='timeslot', - name='sessions', - field=models.ManyToManyField(related_name='slots', to='meeting.Session', through='meeting.Dummy', blank=True, help_text='Scheduled session, if any.', null=True), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0014_auto_20151026_1414.py b/ietf/meeting/migrations/0014_auto_20151026_1414.py deleted file mode 100644 index 8d36fd524..000000000 --- a/ietf/meeting/migrations/0014_auto_20151026_1414.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0013_auto_20151026_1408'), - ] - - operations = [ - migrations.RenameModel('ScheduledSession', 'SchedTimeSessAssignment'), - - migrations.AlterField( - model_name='timeslot', - name='sessions', - field=models.ManyToManyField(related_name='slots', to='meeting.Session', through='meeting.SchedTimeSessAssignment', blank=True, help_text='Scheduled session, if any.', null=True), - preserve_default=True, - ), - - migrations.RemoveField( - model_name='dummy', - name='extendedfrom', - ), - migrations.RemoveField( - model_name='dummy', - name='schedule', - ), - migrations.RemoveField( - model_name='dummy', - name='session', - ), - migrations.RemoveField( - model_name='dummy', - name='timeslot', - ), - migrations.DeleteModel( - name='Dummy', - ), - - ] diff --git a/ietf/meeting/migrations/0015_auto_20151102_1845.py b/ietf/meeting/migrations/0015_auto_20151102_1845.py deleted file mode 100644 index a7904460a..000000000 --- a/ietf/meeting/migrations/0015_auto_20151102_1845.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0014_auto_20151026_1414'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='country', - field=models.CharField(blank=True, max_length=2, choices=[('AF', 'Afghanistan'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua & Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia'), ('BA', 'Bosnia & Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('GB', 'Britain (UK)'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('CV', 'Cape Verde'), ('BQ', 'Caribbean Netherlands'), ('KY', 'Cayman Islands'), ('CF', 'Central African Rep.'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CD', 'Congo (Dem. Rep.)'), ('CG', 'Congo (Rep.)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Curacao'), ('CY', 'Cyprus'), ('CZ', 'Czech Republic'), ('CI', "C\xf4te d'Ivoire"), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('TL', 'East Timor'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern & Antarctic Lands'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island & McDonald Islands'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', 'Korea (North)'), ('KR', 'Korea (South)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', 'Laos'), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macau'), ('MK', 'Macedonia'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia'), ('MD', 'Moldova'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar (Burma)'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RO', 'Romania'), ('RU', 'Russia'), ('RW', 'Rwanda'), ('RE', 'R\xe9union'), ('AS', 'Samoa (American)'), ('WS', 'Samoa (western)'), ('SM', 'San Marino'), ('ST', 'Sao Tome & Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia & the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('BL', 'St Barthelemy'), ('SH', 'St Helena'), ('KN', 'St Kitts & Nevis'), ('LC', 'St Lucia'), ('SX', 'St Maarten (Dutch part)'), ('MF', 'St Martin (French part)'), ('PM', 'St Pierre & Miquelon'), ('VC', 'St Vincent'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard & Jan Mayen'), ('SZ', 'Swaziland'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syria'), ('TW', 'Taiwan'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania'), ('TH', 'Thailand'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad & Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks & Caicos Is'), ('TV', 'Tuvalu'), ('UM', 'US minor outlying islands'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('US', 'United States'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VA', 'Vatican City'), ('VE', 'Venezuela'), ('VN', 'Vietnam'), ('VG', 'Virgin Islands (UK)'), ('VI', 'Virgin Islands (US)'), ('WF', 'Wallis & Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe'), ('AX', '\xc5land Islands')]), - preserve_default=True, - ), - migrations.AlterField( - model_name='meeting', - name='time_zone', - field=models.CharField(blank=True, max_length=255, choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santa_Isabel', b'America/Santa_Isabel'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Rangoon', b'Asia/Rangoon'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')]), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0016_schedule_ietf88_and_89.py b/ietf/meeting/migrations/0016_schedule_ietf88_and_89.py deleted file mode 100644 index c0bfd1521..000000000 --- a/ietf/meeting/migrations/0016_schedule_ietf88_and_89.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - Session = apps.get_model('meeting','Session') - assert(Session.objects.filter(meeting__number__in=['88','89'],group__type__in=['ag','iab','rg','wg'],status_id='sched').count() == 0) - Session.objects.filter(meeting__number__in=['88','89'],group__type__in=['ag','iab','rg','wg'],status_id='schedw').update(status_id='sched') - -def reverse(apps, schema_editor): - Session = apps.get_model('meeting','Session') - Session.objects.filter(meeting__number__in=['88','89'],group__type__in=['ag','iab','rg','wg'],status_id='sched').update(status_id='schedw') - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0015_auto_20151102_1845'), - ] - - operations = [ - migrations.RunPython(forward,reverse), - ] diff --git a/ietf/meeting/migrations/0017_schedule_approved_interims.py b/ietf/meeting/migrations/0017_schedule_approved_interims.py deleted file mode 100644 index bbe943a68..000000000 --- a/ietf/meeting/migrations/0017_schedule_approved_interims.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations -from collections import Counter - -affected = ['interim-2010-drinks-1','interim-2010-core-1','interim-2010-behave-1','interim-2010-siprec-1','interim-2010-cuss-1','interim-2010-iri-1','interim-2010-pcp-1','interim-2010-geopriv-1','interim-2010-soc-1','interim-2010-precis-1','interim-2010-mptcp-1','interim-2010-roll-1','interim-2011-sipclf-1','interim-2011-ipsecme-1','interim-2011-siprec-1','interim-2011-alto-1','interim-2011-xmpp-1','interim-2011-precis-1','interim-2011-nfsv4-1','interim-2011-pcp-1','interim-2011-clue-1','interim-2011-oauth-1','interim-2011-rtcweb-1','interim-2011-drinks-1','interim-2011-atoca-1','interim-2011-cuss-1','interim-2011-softwire-1','interim-2011-ppsp-1','interim-2011-homenet-1','interim-2011-mptcp-1','interim-2012-rtcweb-1','interim-2012-drinks-1','interim-2012-sidr-1','interim-2012-clue-1','interim-2012-krb-wg-1','interim-2012-behave-1','interim-2012-bfcpbis-1','interim-2012-mboned-1'] - -def forward(apps, schema_editor): - Session = apps.get_model('meeting','Session') - assert( Counter(Session.objects.filter(meeting__number__in=affected).values_list('status',flat=True)) == Counter({u'appr':38}) ) - Session.objects.filter(meeting__number__in=affected).update(status_id='sched') - -def reverse(apps, schema_editor): - Session = apps.get_model('meeting','Session') - Session.objects.filter(meeting__number__in=affected).update(status_id='appr') - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0016_schedule_ietf88_and_89'), - ] - - operations = [ - migrations.RunPython(forward,reverse), - ] diff --git a/ietf/meeting/migrations/0018_auto_20160207_0537.py b/ietf/meeting/migrations/0018_auto_20160207_0537.py deleted file mode 100644 index fd2e52072..000000000 --- a/ietf/meeting/migrations/0018_auto_20160207_0537.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0017_schedule_approved_interims'), - ] - - operations = [ - migrations.AlterModelOptions( - name='timeslot', - options={'ordering': ['-time']}, - ), - migrations.AlterField( - model_name='schedtimesessassignment', - name='modified', - field=models.DateTimeField(auto_now=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='session', - name='modified', - field=models.DateTimeField(auto_now=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='timeslot', - name='modified', - field=models.DateTimeField(auto_now=True), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0019_allow_null_sessionpresentation_rev.py b/ietf/meeting/migrations/0019_allow_null_sessionpresentation_rev.py deleted file mode 100644 index b427f8db7..000000000 --- a/ietf/meeting/migrations/0019_allow_null_sessionpresentation_rev.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0018_auto_20160207_0537'), - ] - - operations = [ - migrations.AlterField( - model_name='sessionpresentation', - name='rev', - field=models.CharField(max_length=16, null=True, verbose_name=b'revision', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0020_auto_20160316_0646.py b/ietf/meeting/migrations/0020_auto_20160316_0646.py deleted file mode 100644 index 165cef984..000000000 --- a/ietf/meeting/migrations/0020_auto_20160316_0646.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0019_allow_null_sessionpresentation_rev'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='time_zone', - field=models.CharField(blank=True, max_length=255, choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Rangoon', b'Asia/Rangoon'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')]), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0021_auto_20160328_0726.py b/ietf/meeting/migrations/0021_auto_20160328_0726.py deleted file mode 100644 index dc5f335cc..000000000 --- a/ietf/meeting/migrations/0021_auto_20160328_0726.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0020_auto_20160316_0646'), - ] - - operations = [ - migrations.AlterModelOptions( - name='meeting', - options={'ordering': ['-date', 'id']}, - ), - migrations.AlterModelOptions( - name='timeslot', - options={'ordering': ['-time', 'id']}, - ), - migrations.AlterField( - model_name='meeting', - name='country', - field=models.CharField(blank=True, max_length=2, choices=[('AF', 'Afghanistan'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua & Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia'), ('BA', 'Bosnia & Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('GB', 'Britain (UK)'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('CV', 'Cape Verde'), ('BQ', 'Caribbean NL'), ('KY', 'Cayman Islands'), ('CF', 'Central African Rep.'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CD', 'Congo (Dem. Rep.)'), ('CG', 'Congo (Rep.)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Curacao'), ('CY', 'Cyprus'), ('CZ', 'Czech Republic'), ('CI', "C\xf4te d'Ivoire"), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('TL', 'East Timor'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern & Antarctic Lands'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island & McDonald Islands'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', 'Korea (North)'), ('KR', 'Korea (South)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', 'Laos'), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macau'), ('MK', 'Macedonia'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia'), ('MD', 'Moldova'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar (Burma)'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RO', 'Romania'), ('RU', 'Russia'), ('RW', 'Rwanda'), ('RE', 'R\xe9union'), ('AS', 'Samoa (American)'), ('WS', 'Samoa (western)'), ('SM', 'San Marino'), ('ST', 'Sao Tome & Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia & the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('BL', 'St Barthelemy'), ('SH', 'St Helena'), ('KN', 'St Kitts & Nevis'), ('LC', 'St Lucia'), ('SX', 'St Maarten (Dutch)'), ('MF', 'St Martin (French)'), ('PM', 'St Pierre & Miquelon'), ('VC', 'St Vincent'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard & Jan Mayen'), ('SZ', 'Swaziland'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syria'), ('TW', 'Taiwan'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania'), ('TH', 'Thailand'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad & Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks & Caicos Is'), ('TV', 'Tuvalu'), ('UM', 'US minor outlying islands'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('US', 'United States'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VA', 'Vatican City'), ('VE', 'Venezuela'), ('VN', 'Vietnam'), ('VG', 'Virgin Islands (UK)'), ('VI', 'Virgin Islands (US)'), ('WF', 'Wallis & Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe'), ('AX', '\xc5land Islands')]), - preserve_default=True, - ), - migrations.AlterField( - model_name='meeting', - name='time_zone', - field=models.CharField(blank=True, max_length=255, choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Rangoon', b'Asia/Rangoon'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')]), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0022_auto_20160505_0523.py b/ietf/meeting/migrations/0022_auto_20160505_0523.py deleted file mode 100644 index 7faa3e062..000000000 --- a/ietf/meeting/migrations/0022_auto_20160505_0523.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0021_auto_20160328_0726'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='time_zone', - field=models.CharField(blank=True, max_length=255, choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Rangoon', b'Asia/Rangoon'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')]), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0023_session_remote_instructions.py b/ietf/meeting/migrations/0023_session_remote_instructions.py deleted file mode 100644 index a57deca00..000000000 --- a/ietf/meeting/migrations/0023_session_remote_instructions.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0022_auto_20160505_0523'), - ] - - operations = [ - migrations.AddField( - model_name='session', - name='remote_instructions', - field=models.CharField(max_length=1024, blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0024_migrate_interim_meetings.py b/ietf/meeting/migrations/0024_migrate_interim_meetings.py deleted file mode 100644 index 1222752ae..000000000 --- a/ietf/meeting/migrations/0024_migrate_interim_meetings.py +++ /dev/null @@ -1,110 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import datetime -import os -import re -import subprocess - -from django.conf import settings -from django.db import migrations - - -def get_old_path(meeting): - """Return old path to interim materials file""" - path = os.path.join(settings.AGENDA_PATH, - 'interim', - meeting.date.strftime('%Y'), - meeting.date.strftime('%m'), - meeting.date.strftime('%d'), - meeting.session_set.first().group.acronym) + '/' - #doc.type_id, - #doc.external_url) - return path - -def get_new_path(meeting): - """Returns new path to document""" - return os.path.join(settings.AGENDA_PATH,meeting.number) + '/' - -def copy_materials(meeting): - """Copy all materials files to new location on disk""" - source = get_old_path(meeting) - target = get_new_path(meeting) - if not os.path.isdir(target): - os.makedirs(target) - subprocess.call(['rsync','-a',source,target]) - -def migrate_interim_meetings_forward(apps, schema_editor): - """For all existing interim meetings create an official schedule and timeslot assignments""" - Meeting = apps.get_model("meeting", "Meeting") - Schedule = apps.get_model("meeting", "Schedule") - TimeSlot = apps.get_model("meeting", "TimeSlot") - SchedTimeSessAssignment = apps.get_model("meeting", "SchedTimeSessAssignment") - Person = apps.get_model("person", "Person") - system = Person.objects.get(name="(system)") - - meetings = Meeting.objects.filter(type='interim') - for meeting in meetings: - single_digit_serial = re.search('^(.+)-([0-9])$', meeting.number) - dirty = False - if single_digit_serial: - name = single_digit_serial.group(1) - serial = single_digit_serial.group(2) - meeting.number = "%s-%02d" % (name, int(serial)) - dirty = True - if not meeting.agenda: - meeting.agenda = Schedule.objects.create( - meeting=meeting, - owner=system, - name='Official') - dirty = True - if dirty: - meeting.save() - dirty = False - session = meeting.session_set.first() # all legacy interim meetings have one session - time = datetime.datetime.combine(meeting.date, datetime.time(0)) - if TimeSlot.objects.filter(meeting=meeting, type_id="session", time=time).exists(): - slot = TimeSlot.objects.get(meeting=meeting, type_id="session", time=time).exists() - else: - slot = TimeSlot.objects.create( - meeting=meeting, - type_id="session", - duration=session.requested_duration, - time=time) - SchedTimeSessAssignment.objects.get_or_create( - timeslot=slot, - session=session, - schedule=meeting.agenda) - -def migrate_interim_meetings_backward(apps, schema_editor): - Meeting = apps.get_model("meeting", "Meeting") - meetings = Meeting.objects.filter(type='interim') - for meeting in meetings: - zero_digit_serial = re.search('^(.+)-0([0-9])$', meeting.number) - if zero_digit_serial: - name = zero_digit_serial.group(1) - serial = zero_digit_serial.group(2) - meeting.number = "%s-%s" % (name, serial) - meeting.save() - -def migrate_interim_materials_files_forward(apps, schema_editor): - """Copy interim materials files to new location""" - Meeting = apps.get_model("meeting", "Meeting") - - for meeting in Meeting.objects.filter(type='interim'): - copy_materials(meeting) - -def migrate_interim_materials_files_backward(apps, schema_editor): - """Copy interim materials files to new location""" - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0023_session_remote_instructions'), - ] - - operations = [ - migrations.RunPython(migrate_interim_meetings_forward, migrate_interim_meetings_backward), - migrations.RunPython(migrate_interim_materials_files_forward, migrate_interim_materials_files_backward), - ] diff --git a/ietf/meeting/migrations/0025_add_floorplan_and_room_coordinates.py b/ietf/meeting/migrations/0025_add_floorplan_and_room_coordinates.py deleted file mode 100644 index 212e748cc..000000000 --- a/ietf/meeting/migrations/0025_add_floorplan_and_room_coordinates.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import ietf.utils.storage -import ietf.meeting.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0024_migrate_interim_meetings'), - ] - - operations = [ - migrations.CreateModel( - name='FloorPlan', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('order', models.SmallIntegerField()), - ('image', models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=ietf.meeting.models.floorplan_path, blank=True)), - ('meeting', models.ForeignKey(to='meeting.Meeting')), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.AddField( - model_name='room', - name='floorplan', - field=models.ForeignKey(default=None, blank=True, to='meeting.FloorPlan', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='room', - name='x1', - field=models.SmallIntegerField(default=None, null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='room', - name='x2', - field=models.SmallIntegerField(default=None, null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='room', - name='y1', - field=models.SmallIntegerField(default=None, null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='room', - name='y2', - field=models.SmallIntegerField(default=None, null=True, blank=True), - preserve_default=True, - ), - migrations.AlterModelOptions( - name='room', - options={'ordering': ['-meeting', 'name']}, - ), - ] diff --git a/ietf/meeting/migrations/0026_add_floorplan_data.py b/ietf/meeting/migrations/0026_add_floorplan_data.py deleted file mode 100644 index 9f193f6a0..000000000 --- a/ietf/meeting/migrations/0026_add_floorplan_data.py +++ /dev/null @@ -1,77 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -floors = [ - (1, "Berlin Intercontinental Floor 1", 1, 'floor/floorplan-96-berlin-intercontinental-floor-1.jpg'), - (2, "Berlin Intercontinental Floor 2", 2, 'floor/floorplan-96-berlin-intercontinental-floor-2.jpg'), - (3, "Berlin Intercontinental Floor 14", 14, 'floor/floorplan-96-berlin-intercontinental-floor-14.jpg'), -] - -rooms = [ - ("Bellevue", 1, 176, 1348, 324, 1526), - ("Bishop", 2, 802, 1269, 890, 1390,), - ("Charlottenburg I", 1, 374, 320, 528, 400), - ("Charlottenburg II/III", 1, 374, 172, 528, 316), - ("Chess", 2, 802, 1150, 890, 1264), - ("Dahlem", 1, 201, 1035, 324, 1086), - ("Glienicke", 1, 228, 1251, 324, 1310), - ("Hugos 360", 3, 801, 1346, 976, 1509), - ("Kaminzimmer", 1, 696, 820, 812, 1038), - ("King", 2, 802, 1389, 890, 1508), - ("Koepenick I", 1, 370, 453, 458, 602), - ("Koepenick I/II", 1, 370, 453, 458, 602), - ("Koepenick III", 1, 456, 440, 540, 526), - ("Lincke", 2, 365, 111, 531, 171), - ("Potsdam Foyer", 1, 918, 987, 1149, 1142), - ("Potsdam I", 1, 1228, 790, 1550, 994), - ("Potsdam I/III", 1, 1017, 792, 1550, 994), - ("Potsdam II", 1, 1311, 1036, 1536, 1142), - ("Potsdam III", 1, 1017, 792, 1228, 987), - ("Rook", 2, 915, 1150, 1004, 1269), - ("Schinkel I", 2, 532, 222, 594, 360), - ("Schinkel I/II", 2, 532, 222, 594, 360), - ("Schinkel III", 2, 532, 112, 592, 222), - ("Schoeneberg", 1, 369, 42, 534, 126), - ("Tegel", 1, 201, 1088, 326, 1184), - ("Tiergarten", 1, 240, 612, 334, 780), - ("Wintergarten/Pavillion", 1, 466, 1038, 711, 1504), -] - -def forward(apps, schema_editor): - FloorPlan = apps.get_model('meeting','FloorPlan') - Room = apps.get_model('meeting','Room') - Meeting = apps.get_model('meeting','Meeting') - meeting = Meeting.objects.get(number='96') - for item in floors: - id, name, order, image = item - f = FloorPlan(id=id, name=name, meeting=meeting, order=order, image=image) - f.save() - - for item in rooms: - name, floor_id, x1, y1, x2, y2 = item - try: - room, created = Room.objects.get_or_create(name=name, meeting=meeting) - room.floorplan_id = floor_id - room.x1 = x1 - room.y1 = y1 - room.x2 = x2 - room.y2 = y2 - room.save() - except Room.DoesNotExist: - import sys - sys.stderr.write("\nNo such room: %s" % name) - -def backward(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0025_add_floorplan_and_room_coordinates'), - ] - - operations = [ - migrations.RunPython(forward,backward) - ] diff --git a/ietf/meeting/migrations/0027_urlresource.py b/ietf/meeting/migrations/0027_urlresource.py deleted file mode 100644 index a9bcfb690..000000000 --- a/ietf/meeting/migrations/0027_urlresource.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0013_add_group_type_verbose_name_data'), - ('meeting', '0026_add_floorplan_data'), - ] - - operations = [ - migrations.CreateModel( - name='UrlResource', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('url', models.URLField(null=True, blank=True)), - ('name', models.ForeignKey(to='name.RoomResourceName')), - ('room', models.ForeignKey(to='meeting.Room')), - ], - options={ - }, - bases=(models.Model,), - ), - ] diff --git a/ietf/meeting/migrations/0028_add_audio_stream_data.py b/ietf/meeting/migrations/0028_add_audio_stream_data.py deleted file mode 100644 index 0c73376f4..000000000 --- a/ietf/meeting/migrations/0028_add_audio_stream_data.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -rooms = [ - ("Bellevue", "http://ietf96streaming.dnsalias.net/ietf/ietf961.m3u"), - ("Charlottenburg I", "http://ietf96streaming.dnsalias.net/ietf/ietf962.m3u"), - ("Charlottenburg II/III", "http://ietf96streaming.dnsalias.net/ietf/ietf963.m3u"), - ("Lincke", "http://ietf96streaming.dnsalias.net/ietf/ietf964.m3u"), - ("Potsdam I", "http://ietf96streaming.dnsalias.net/ietf/ietf965.m3u"), - ("Potsdam II", "http://ietf96streaming.dnsalias.net/ietf/ietf966.m3u"), - ("Potsdam III", "http://ietf96streaming.dnsalias.net/ietf/ietf967.m3u"), - ("Schoeneberg", "http://ietf96streaming.dnsalias.net/ietf/ietf968.m3u"), - ("Tiergarten", "http://ietf96streaming.dnsalias.net/ietf/ietf969.m3u"), -] - -def forward(apps, schema_editor): - Room = apps.get_model('meeting','Room') - Meeting = apps.get_model('meeting','Meeting') - UrlResource = apps.get_model('meeting','UrlResource') - RoomResourceName = apps.get_model('name','RoomResourceName') - - meeting = Meeting.objects.get(number='96') - - audiostream, _ = RoomResourceName.objects.get_or_create(slug='audiostream', name='Audio Stream', desc='Audio streaming support') - - for item in rooms: - name, url = item - try: - room = Room.objects.get(name=name, meeting=meeting) - urlres, _ = UrlResource.objects.get_or_create(name=audiostream, room=room, url=url) - except Room.DoesNotExist: - import sys - sys.stderr.write("\nNo such room: %s" % name) - -def backward(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0027_urlresource'), - ] - - operations = [ - migrations.RunPython(forward,backward) - ] diff --git a/ietf/meeting/migrations/0029_add_time_to_room_and_floorplan.py b/ietf/meeting/migrations/0029_add_time_to_room_and_floorplan.py deleted file mode 100644 index 671867a10..000000000 --- a/ietf/meeting/migrations/0029_add_time_to_room_and_floorplan.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import datetime - -def forward(apps,schema_editor): - Room = apps.get_model('meeting','Room') - FloorPlan = apps.get_model('meeting','FloorPlan') - for room in Room.objects.all(): - room.time = room.meeting.date+datetime.timedelta(days=5) - room.save() - for plan in FloorPlan.objects.all(): - plan.time = plan.meeting.date+datetime.timedelta(days=5) - plan.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0028_add_audio_stream_data'), - ] - - operations = [ - migrations.AddField( - model_name='floorplan', - name='time', - field=models.DateTimeField(default=datetime.datetime.now), - preserve_default=True, - ), - migrations.AddField( - model_name='room', - name='time', - field=models.DateTimeField(default=datetime.datetime.now), - preserve_default=True, - ), - migrations.RunPython(forward,None) - ] diff --git a/ietf/meeting/migrations/0030_add_material_day_offsets.py b/ietf/meeting/migrations/0030_add_material_day_offsets.py deleted file mode 100644 index 58ba60210..000000000 --- a/ietf/meeting/migrations/0030_add_material_day_offsets.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0029_add_time_to_room_and_floorplan'), - ] - - operations = [ - migrations.AddField( - model_name='meeting', - name='submission_correction_day_offset', - field=models.IntegerField(default=50, help_text=b'The number of days after the meeting start date in which updates to existing meeting materials will be accepted.', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='meeting', - name='submission_cutoff_day_offset', - field=models.IntegerField(default=26, help_text=b'The number of days after the meeting start date in which new meeting materials will be accepted.', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='meeting', - name='submission_start_day_offset', - field=models.IntegerField(default=90, help_text=b'The number of days before the meeting start date after which meeting materials will be accepted.', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0031_add_proceedings_final.py b/ietf/meeting/migrations/0031_add_proceedings_final.py deleted file mode 100644 index 8cfdaec82..000000000 --- a/ietf/meeting/migrations/0031_add_proceedings_final.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -def reverse(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0030_add_material_day_offsets'), - ] - - operations = [ - migrations.AddField( - model_name='meeting', - name='proceedings_final', - field=models.BooleanField(default=False, help_text='Are the proceedings for this meeting complete?'), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0032_reconstruct_bluesheet_docs_95through96.py b/ietf/meeting/migrations/0032_reconstruct_bluesheet_docs_95through96.py deleted file mode 100644 index 808280324..000000000 --- a/ietf/meeting/migrations/0032_reconstruct_bluesheet_docs_95through96.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import os - -import debug # pyflakes:ignore - -from django.db import migrations -from django.conf import settings - - -def official_time(session): - return session.timeslotassignments.filter(schedule=session.meeting.agenda).first() - -def forward(apps, schema_editor): - Document = apps.get_model('doc','Document') - NewRevisionDocEvent = apps.get_model('doc','NewRevisionDocEvent') - State = apps.get_model('doc','State') - Group = apps.get_model('group','Group') - Meeting = apps.get_model('meeting', 'Meeting') - - active = State.objects.get(type_id='bluesheets',slug='active') - - print - print "Attention: The following anomalies are expected:" - print "There are no bluesheets for nmlrg at IETF95 or for cellar at IETF96." - print "At IETF95, netmod and opsec have a different number of bluesheets than sessions." - print "Please report any other warnings issued during the production migration to RjS." - - for num in [95, 96]: - mtg = Meeting.objects.get(number=num) - bs_path = '%s/bluesheets/'% os.path.join(settings.AGENDA_PATH,mtg.number) - if not os.path.exists(bs_path): - os.makedirs(bs_path) - bs_files = os.listdir(bs_path) - bs_acronyms = set([x[14:].split('-')[0] for x in bs_files]) - group_acronyms = set([x.group.acronym for x in mtg.session_set.filter(status_id='sched') if official_time(x) and x.group.type_id in ['wg','rg','ag'] and not x.agenda_note.lower().startswith('cancel')]) - - if bs_acronyms-group_acronyms: - print "Warning IETF%s : groups that have bluesheets but did not appear to meet: %s"%(num,list(bs_acronyms-group_acronyms)) - if group_acronyms-bs_acronyms: - print "Warning IETF%s : groups that appeared to meet but have no bluesheets: %s"%(num,list(group_acronyms-bs_acronyms)) - - for acronym in group_acronyms & bs_acronyms: - group = Group.objects.get(acronym=acronym) - bs = sorted([x for x in bs_files if '-%s-'%acronym in x]) - bs_count = len(bs) - sess = sorted([ x for x in mtg.session_set.filter(group__acronym=acronym) if not x.agenda_note.lower().startswith('cancel')], - key = lambda x: official_time(x).timeslot.time) - sess_count = len(sess) - if bs_count != sess_count: - print "Warning IETF%s: %s : different number of bluesheets (%d) than sessions (%d)"%(num,acronym,bs_count,sess_count) - numdocs = min(bs_count,sess_count) - for n in range(numdocs): - doc = Document.objects.create( - name=bs[n][:-4], - type_id='bluesheets', - title='Bluesheets IETF%d : %s : %s' % (num,acronym,official_time(sess[n]).timeslot.time.strftime('%a %H:%M')), - group=group, - rev='00', - external_url=bs[n], - ) - doc.states.add(active) - doc.docalias_set.create(name=doc.name) - NewRevisionDocEvent.objects.create(doc=doc,time=doc.time,by_id=1,type='new_revision',desc='New revision available: %s'%doc.rev,rev=doc.rev) - sess[n].sessionpresentation_set.create(document=doc,rev='00') - -def reverse(apps, schema_editor): - Document = apps.get_model('doc','Document') - Document.objects.filter(type_id='bluesheets',sessionpresentation__session__meeting__number__in=[95,96]).exclude(group__acronym='openpgp').delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0031_add_proceedings_final'), - ('doc', '0012_auto_20160207_0537'), - ('group','0008_auto_20160505_0523'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/meeting/migrations/0033_add_meeting_acknowlegements.py b/ietf/meeting/migrations/0033_add_meeting_acknowlegements.py deleted file mode 100644 index ec35c5d6d..000000000 --- a/ietf/meeting/migrations/0033_add_meeting_acknowlegements.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0032_reconstruct_bluesheet_docs_95through96'), - ] - - operations = [ - migrations.AddField( - model_name='meeting', - name='acknowledgements', - field=models.TextField(help_text=b'Acknowledgements for use in meeting proceedings. Use ReStructuredText markup.', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0034_auto_20160818_1555.py b/ietf/meeting/migrations/0034_auto_20160818_1555.py deleted file mode 100644 index fe30c44a3..000000000 --- a/ietf/meeting/migrations/0034_auto_20160818_1555.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dbtemplate', '0002_auto_20141222_1749'), - ('meeting', '0033_add_meeting_acknowlegements'), - ] - - operations = [ - migrations.AddField( - model_name='meeting', - name='overview', - field=models.ForeignKey(related_name='overview', editable=False, to='dbtemplate.DBTemplate', null=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='meeting', - name='acknowledgements', - field=models.TextField(help_text=b'Acknowledgements for use in meeting proceedings. Use ReStructuredText markup.', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0035_auto_20160818_1610.py b/ietf/meeting/migrations/0035_auto_20160818_1610.py deleted file mode 100644 index 30fadae07..000000000 --- a/ietf/meeting/migrations/0035_auto_20160818_1610.py +++ /dev/null @@ -1,119 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -content ='''The Internet Engineering Task Force (IETF) provides a forum for working groups to coordinate technical development of new protocols. Its most important function is the development and selection of standards within the Internet protocol suite. - -The IETF began in January 1986 as a forum for technical coordination by contractors for the then US Defense Advanced Research Projects Agency (DARPA), working on the ARPANET, US Defense Data Network (DDN), and the Internet core gateway system. Since that time, the IETF has grown into a large open international community of network designers, operators, vendors, and researchers concerned with the evolution of the Internet architecture and the smooth operation of the Internet. - -The IETF mission includes: - -* Identifying and proposing solutions to pressing operational and technical problems in the Internet -* Specifying the development or usage of protocols and the near-term architecture, to solve technical problems for the Internet -* Facilitating technology transfer from the Internet Research Task Force (IRTF) to the wider Internet community;and -* Providing a forum for the exchange of relevant information within the Internet community between vendors, users, researchers, agency contractors, and network managers. - -Technical activities in the IETF are addressed within working groups. All working groups are organized roughly by function into seven areas. Each area is led by one or more Area Directors who have primary responsibility for that one area of IETF activity. Together with the Chair of the IETF/IESG, these Area Directors comprise the Internet Engineering Steering Group (IESG). - -=================== =================================== ======================== -Name Area Email -=================== =================================== ======================== -Jari Arkko IETF Chair chair@ietf.org -Jari Arkko General Area jari.arkko@piuha.net -Alia Atlas Routing Area akatlas@gmail.com -Deborah Brungard Routing Areas db3546@att.com -Ben Campbell Applications and Real-Time Area ben@nostrum.com -Benoit Claise Operations and Management Area bclaise@cisco.com -Alissa Cooper Applications and Real-Time Area alissa@cooperw.in -Spencer Dawkins Transport Area spencerdawkins.ietf@gmail.com -Stephen Farrell Security Area stephen.farrell@cs.tcd.ie -Joel Jaeggli Operations and Management Area joelja@bogus.com -Suresh Krishnan Internet Area suresh.krishnan@ericsson.com -Mirja Kühlewind Transport Area ietf@kuehlewind.net -Terry Manderson Internet Area terry.manderson@icann.org -Alexey Melnikov Applications and Real-Time Area aamelnikov@fastmail.fm -Kathleen Moriarty Security Area Kathleen.Moriarty.ietf@gmail.com -Alvaro Retana Routing Area aretana@cisco.com -=================== =================================== ======================== - - -Liaison and ex-officio members include: - -=================== =================================== ======================== -Olaf Kolkman IAB Chair iab-chair@iab.org -Danny McPherson IAB Liaison danny@tcb.net -Michelle Cotton IANA Liaison iana@iana.org -Sandy Ginoza RFC Editor Liaison rfc-editor@rfc-editor.org -Alexa Morris IETF Secretariat Liaison exec-director@ietf.org -=================== =================================== ======================== - - -The IETF has a Secretariat, which is managed by Association Management Solutions, LLC (AMS) in Fremont, California.The IETF Executive Director is Alexa Morris (exec-director@ietf.org). - - -Other personnel that provide full-time support to the Secretariat include: - -========================= =================================== -Senior Meeting Planner Marcia Beaulieu -Project Manager Stephanie McCammon -Meeting Regsitrar Maddy Conner -Project Manager Cindy Morgan -Project Manager Amy Vezza -========================= =================================== - -To contact the Secretariat, please refer to the addresses and URLs provided on the IETF Secretariat Web page. - -The IETF also has a general Administrative Support Activity headed by the IETF Administrative Director, Ray Pelletier iad@ietf.org - -The working groups conduct their business during the tri-annual IETF meetings, at interim working group meetings, and via electronic mail on mailing lists established for each group. The tri-annual IETF meetings are 4.5 days in duration, and consist of working group sessions, training sessions, and plenary sessions. The plenary sessions include technical presentations, status reports, and an open IESG meeting. - -Following each meeting, the IETF Secretariat publishes meeting proceedings, which contain reports from all of the groups that met, as well as presentation slides, where available. The proceedings also include a summary of the standards-related activities that took place since the previous IETF meeting. - -Meeting minutes, working group charters (including information about the working group mailing lists), and general information on current IETF activities are available on the IETF Web site at https://www.ietf.org. -''' - -def forward(apps, schema_editor): - DBTemplate = apps.get_model("dbtemplate", "DBTemplate") - Group = apps.get_model("group", "Group") - Meeting = apps.get_model("meeting", "Meeting") - group = Group.objects.get(acronym='ietf') - template = DBTemplate.objects.create( - content=content, - group=group, - path='/meeting/proceedings/defaults/overview.rst', - title='Proceedings Overview Template', - type_id='rst') - - # make copies for 95-97 - for n in (95,96,97): - template.id = None - template.path = '/meeting/proceedings/%s/overview.rst' % (n) - template.title = 'IETF %s Proceedings Overview' % (n) - template.save() - meeting = Meeting.objects.get(number=n) - meeting.overview = template - meeting.save() - -def reverse(apps, schema_editor): - DBTemplate = apps.get_model("dbtemplate", "DBTemplate") - Meeting = apps.get_model("meeting", "Meeting") - DBTemplate.objects.get(path='/meeting/proceedings/defaults/overview.rst').delete() - for n in (95,96,97): - meeting = Meeting.objects.get(number=n) - meeting.overview = None - meeting.save() - DBTemplate.objects.get(path='/meeting/proceedings/95/overview.rst').delete() - DBTemplate.objects.get(path='/meeting/proceedings/96/overview.rst').delete() - DBTemplate.objects.get(path='/meeting/proceedings/97/overview.rst').delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0034_auto_20160818_1555'), - ] - - operations = [ - migrations.RunPython(forward,reverse), - ] diff --git a/ietf/meeting/migrations/0036_add_order_to_sessionpresentation.py b/ietf/meeting/migrations/0036_add_order_to_sessionpresentation.py deleted file mode 100644 index 0388eef09..000000000 --- a/ietf/meeting/migrations/0036_add_order_to_sessionpresentation.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import debug # pyflakes:ignore - -from django.db import models, migrations - -def forward(apps, schema_editor): - SessionPresentation = apps.get_model("meeting","SessionPresentation") - for sp in SessionPresentation.objects.filter(document__type__slug='slides',session__meeting__number__in=['95','96']): - sp.order = int(sp.document.name.split('-')[-1]) - sp.save() - -def reverse(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0035_auto_20160818_1610'), - ] - - operations = [ - migrations.AddField( - model_name='sessionpresentation', - name='order', - field=models.PositiveSmallIntegerField(default=0), - preserve_default=True, - ), - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/meeting/migrations/0037_change_meta_options_on_sessionpresentation.py b/ietf/meeting/migrations/0037_change_meta_options_on_sessionpresentation.py deleted file mode 100644 index c823c62d5..000000000 --- a/ietf/meeting/migrations/0037_change_meta_options_on_sessionpresentation.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0036_add_order_to_sessionpresentation'), - ] - - operations = [ - migrations.AlterModelOptions( - name='sessionpresentation', - options={'ordering': ('order',)}, - ), - ] diff --git a/ietf/meeting/migrations/0038_auto_20161013_1459.py b/ietf/meeting/migrations/0038_auto_20161013_1459.py deleted file mode 100644 index 15d82e05f..000000000 --- a/ietf/meeting/migrations/0038_auto_20161013_1459.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -from ietf.meeting.utils import create_proceedings_templates - -def create_attendee_templates(apps, schema_editor): - """Create attendee templates for supported meetings""" - Meeting = apps.get_model("meeting", "Meeting") - create_proceedings_templates(Meeting.objects.get(number=95)) - create_proceedings_templates(Meeting.objects.get(number=96)) - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0037_change_meta_options_on_sessionpresentation'), - ] - - operations = [ - migrations.RunPython(create_attendee_templates), - ] diff --git a/ietf/meeting/migrations/0039_auto_20161017_1053.py b/ietf/meeting/migrations/0039_auto_20161017_1053.py deleted file mode 100644 index e3f0881dc..000000000 --- a/ietf/meeting/migrations/0039_auto_20161017_1053.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0038_auto_20161013_1459'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='time_zone', - field=models.CharField(blank=True, max_length=255, choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yangon', b'Asia/Yangon'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')]), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0040_fix_mext_meeting_materials.py b/ietf/meeting/migrations/0040_fix_mext_meeting_materials.py deleted file mode 100644 index 6e50d1739..000000000 --- a/ietf/meeting/migrations/0040_fix_mext_meeting_materials.py +++ /dev/null @@ -1,77 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations -from django.db.utils import IntegrityError - -def forward(apps, schema_editor): - Group = apps.get_model('group', 'Group') - Document = apps.get_model('doc', 'Document') - SessionPresentation = apps.get_model('meeting', 'SessionPresentation') - # - mext = Group.objects.get(acronym='mext') - plist = SessionPresentation.objects.filter(session__group=mext) - for p in plist: - print(p.document_id) - name = p.document_id.replace('-dmm', '-mext') - try: - doc = p.document - Document.objects.create( - time=doc.time, - type=doc.type, - title=doc.title.replace('DMM', 'MEXT'), - group=mext, - rev=doc.rev, - order=doc.order, - external_url=doc.external_url.replace('dmm', 'mext'), - name=name, - ) - doc.delete() - except Document.DoesNotExist as e: - print("%s: %s" % (p.document_id, e)) - except IntegrityError as e: - print("%s: %s" % (p.document_id, e)) - if not SessionPresentation.objects.filter(document_id=name).exists(): - p.document_id = name - p.save() - -def backward(apps, schema_editor): - Group = apps.get_model('group', 'Group') - Document = apps.get_model('doc', 'Document') - SessionPresentation = apps.get_model('meeting', 'SessionPresentation') - mext = Group.objects.get(acronym='mext') - dmm = Group.objects.get(acronym='dmm') - plist = SessionPresentation.objects.filter(session__group=mext) - for p in plist: - print(p.document_id) - name = p.document_id.replace('-mext', '-dmm') - try: - doc = p.document - Document.objects.create( - time=doc.time, - type=doc.type, - title=doc.title.replace('MEXT', 'DMM'), - group=dmm, - rev=doc.rev, - order=doc.order, - external_url=doc.external_url.replace('mext', 'dmm'), - name=name, - ) - doc.delete() - except Document.DoesNotExist as e: - print("%s: %s" % (p.document_id, e)) - except IntegrityError as e: - print("%s: %s" % (p.document_id, e)) - if not SessionPresentation.objects.filter(document_id=name).exists(): - p.document_id = name - p.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0039_auto_20161017_1053'), - ] - - operations = [ - migrations.RunPython(forward, backward) - ] diff --git a/ietf/meeting/migrations/0041_auto_20161209_0436.py b/ietf/meeting/migrations/0041_auto_20161209_0436.py deleted file mode 100644 index 26d24815b..000000000 --- a/ietf/meeting/migrations/0041_auto_20161209_0436.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0040_fix_mext_meeting_materials'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='country', - field=models.CharField(blank=True, max_length=2, choices=[('AF', 'Afghanistan'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua & Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia'), ('BA', 'Bosnia & Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('GB', 'Britain (UK)'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('CV', 'Cape Verde'), ('BQ', 'Caribbean NL'), ('KY', 'Cayman Islands'), ('CF', 'Central African Rep.'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CD', 'Congo (Dem. Rep.)'), ('CG', 'Congo (Rep.)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Cura\xe7ao'), ('CY', 'Cyprus'), ('CZ', 'Czech Republic'), ('CI', "C\xf4te d'Ivoire"), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('TL', 'East Timor'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern & Antarctic Lands'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island & McDonald Islands'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', 'Korea (North)'), ('KR', 'Korea (South)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', 'Laos'), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macau'), ('MK', 'Macedonia'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia'), ('MD', 'Moldova'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar (Burma)'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RO', 'Romania'), ('RU', 'Russia'), ('RW', 'Rwanda'), ('RE', 'R\xe9union'), ('AS', 'Samoa (American)'), ('WS', 'Samoa (western)'), ('SM', 'San Marino'), ('ST', 'Sao Tome & Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia & the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('BL', 'St Barthelemy'), ('SH', 'St Helena'), ('KN', 'St Kitts & Nevis'), ('LC', 'St Lucia'), ('SX', 'St Maarten (Dutch)'), ('MF', 'St Martin (French)'), ('PM', 'St Pierre & Miquelon'), ('VC', 'St Vincent'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard & Jan Mayen'), ('SZ', 'Swaziland'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syria'), ('TW', 'Taiwan'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania'), ('TH', 'Thailand'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad & Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks & Caicos Is'), ('TV', 'Tuvalu'), ('UM', 'US minor outlying islands'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('US', 'United States'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VA', 'Vatican City'), ('VE', 'Venezuela'), ('VN', 'Vietnam'), ('VG', 'Virgin Islands (UK)'), ('VI', 'Virgin Islands (US)'), ('WF', 'Wallis & Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe'), ('AX', '\xc5land Islands')]), - preserve_default=True, - ), - migrations.AlterField( - model_name='meeting', - name='time_zone', - field=models.CharField(blank=True, max_length=255, choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Atyrau', b'Asia/Atyrau'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Famagusta', b'Asia/Famagusta'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yangon', b'Asia/Yangon'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Saratov', b'Europe/Saratov'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')]), - preserve_default=True, - ), - ] diff --git a/ietf/meeting/migrations/0042_auto_20161207_1137.py b/ietf/meeting/migrations/0042_auto_20161207_1137.py deleted file mode 100644 index ca427feb7..000000000 --- a/ietf/meeting/migrations/0042_auto_20161207_1137.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0041_auto_20161209_0436'), - ] - - operations = [ - migrations.AlterField( - model_name='timeslot', - name='sessions', - field=models.ManyToManyField(help_text='Scheduled session, if any.', related_name='slots', through='meeting.SchedTimeSessAssignment', to='meeting.Session', blank=True), - ), - ] diff --git a/ietf/meeting/migrations/0043_auto_20161219_1345.py b/ietf/meeting/migrations/0043_auto_20161219_1345.py deleted file mode 100644 index c2c7deea4..000000000 --- a/ietf/meeting/migrations/0043_auto_20161219_1345.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import datetime - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0042_auto_20161207_1137'), - ] - - operations = [ - migrations.AddField( - model_name='meeting', - name='xidsubmit_cutoff_time_utc', - field=models.DurationField(default=datetime.timedelta(0, 86399), help_text=b"The time of day (UTC) after which submission will be closed. Use for example 23:59:59.", blank=True), - ), - migrations.AddField( - model_name='meeting', - name='xidsubmit_cutoff_warning_days', - field=models.DurationField(default=datetime.timedelta(21), help_text=b"How long before the 00 cutoff to start showing cutoff warnings. Use for example '21' or '21 days'.", blank=True), - ), - migrations.AddField( - model_name='session', - name='xrequested_duration', - field=models.DurationField(default=datetime.timedelta(0)), - ), - migrations.AddField( - model_name='timeslot', - name='xduration', - field=models.DurationField(default=datetime.timedelta(0)), - ), - ] diff --git a/ietf/meeting/migrations/0044_convert_timedelta_data_to_duration.py b/ietf/meeting/migrations/0044_convert_timedelta_data_to_duration.py deleted file mode 100644 index 385dfc040..000000000 --- a/ietf/meeting/migrations/0044_convert_timedelta_data_to_duration.py +++ /dev/null @@ -1,60 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - Meeting = apps.get_model('meeting', 'Meeting') - TimeSlot = apps.get_model('meeting', 'TimeSlot') - Session = apps.get_model('meeting', 'Session') - import sys - sys.stderr.write("\n") - sys.stderr.write("Setting duration fields in Meeting objects...\n") - for m in Meeting.objects.all(): - if m.xidsubmit_cutoff_time_utc != m.idsubmit_cutoff_time_utc: - m.xidsubmit_cutoff_time_utc = m.idsubmit_cutoff_time_utc - m.xidsubmit_cutoff_warning_days = m.idsubmit_cutoff_warning_days - m.save() - sys.stderr.write("Setting duration fields in TimeSlot objects...\n") - for t in TimeSlot.objects.all(): - if t.xduration != t.duration: - t.xduration = t.duration - t.save() - sys.stderr.write("Setting duration fields in Session objects...\n") - for s in Session.objects.all(): - if s.xrequested_duration != s.requested_duration: - s.xrequested_duration = s.requested_duration - s.save() - -def backward(apps, schema_editor): - Meeting = apps.get_model('meeting', 'Meeting') - TimeSlot = apps.get_model('meeting', 'TimeSlot') - Session = apps.get_model('meeting', 'Session') - import sys - sys.stderr.write("\n") - sys.stderr.write("Setting timedelta fields in Meeting objects...\n") - for m in Meeting.objects.all(): - if m.idsubmit_cutoff_time_utc != m.xidsubmit_cutoff_time_utc: - m.idsubmit_cutoff_time_utc = m.xidsubmit_cutoff_time_utc - m.idsubmit_cutoff_warning_days = m.xidsubmit_cutoff_warning_days - m.save() - sys.stderr.write("Setting timedelta fields in TimeSlot objects...\n") - for t in TimeSlot.objects.all(): - if t.duration != t.xduration: - t.duration = t.xduration - t.save() - sys.stderr.write("Setting timedelta fields in Session objects...\n") - for s in Session.objects.all(): - if s.requested_duration != s.xrequested_duration: - s.requested_duration = s.xrequested_duration - s.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0043_auto_20161219_1345'), - ] - - operations = [ - migrations.RunPython(forward, backward) - ] diff --git a/ietf/meeting/migrations/0045_switch_timedelta_fields_to_duration.py b/ietf/meeting/migrations/0045_switch_timedelta_fields_to_duration.py deleted file mode 100644 index cd7e6cb94..000000000 --- a/ietf/meeting/migrations/0045_switch_timedelta_fields_to_duration.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0044_convert_timedelta_data_to_duration'), - ] - - operations = [ - migrations.RemoveField( - model_name='meeting', - name='idsubmit_cutoff_time_utc', - ), - migrations.RenameField( - model_name='meeting', - old_name='xidsubmit_cutoff_time_utc', - new_name='idsubmit_cutoff_time_utc', - ), - # - migrations.RemoveField( - model_name='meeting', - name='idsubmit_cutoff_warning_days', - ), - migrations.RenameField( - model_name='meeting', - old_name='xidsubmit_cutoff_warning_days', - new_name='idsubmit_cutoff_warning_days', - ), - # - migrations.RemoveField( - model_name='timeslot', - name='duration', - ), - migrations.RenameField( - model_name='timeslot', - old_name='xduration', - new_name='duration', - ), - # - migrations.RemoveField( - model_name='session', - name='requested_duration', - ), - migrations.RenameField( - model_name='session', - old_name='xrequested_duration', - new_name='requested_duration', - ), - ] diff --git a/ietf/meeting/migrations/0046_auto_20170201_0857.py b/ietf/meeting/migrations/0046_auto_20170201_0857.py deleted file mode 100644 index af875f58f..000000000 --- a/ietf/meeting/migrations/0046_auto_20170201_0857.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-01 08:57 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0045_switch_timedelta_fields_to_duration'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='country', - field=models.CharField(blank=True, choices=[(b'', b''), ('AF', 'Afghanistan'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua & Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia'), ('BA', 'Bosnia & Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('GB', 'Britain (UK)'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('CV', 'Cape Verde'), ('BQ', 'Caribbean NL'), ('KY', 'Cayman Islands'), ('CF', 'Central African Rep.'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CD', 'Congo (Dem. Rep.)'), ('CG', 'Congo (Rep.)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Cura\xe7ao'), ('CY', 'Cyprus'), ('CZ', 'Czech Republic'), ('CI', "C\xf4te d'Ivoire"), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('TL', 'East Timor'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern & Antarctic Lands'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island & McDonald Islands'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', 'Korea (North)'), ('KR', 'Korea (South)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', 'Laos'), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macau'), ('MK', 'Macedonia'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia'), ('MD', 'Moldova'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar (Burma)'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RO', 'Romania'), ('RU', 'Russia'), ('RW', 'Rwanda'), ('RE', 'R\xe9union'), ('AS', 'Samoa (American)'), ('WS', 'Samoa (western)'), ('SM', 'San Marino'), ('ST', 'Sao Tome & Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia & the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('BL', 'St Barthelemy'), ('SH', 'St Helena'), ('KN', 'St Kitts & Nevis'), ('LC', 'St Lucia'), ('SX', 'St Maarten (Dutch)'), ('MF', 'St Martin (French)'), ('PM', 'St Pierre & Miquelon'), ('VC', 'St Vincent'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard & Jan Mayen'), ('SZ', 'Swaziland'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syria'), ('TW', 'Taiwan'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania'), ('TH', 'Thailand'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad & Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks & Caicos Is'), ('TV', 'Tuvalu'), ('UM', 'US minor outlying islands'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('US', 'United States'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VA', 'Vatican City'), ('VE', 'Venezuela'), ('VN', 'Vietnam'), ('VG', 'Virgin Islands (UK)'), ('VI', 'Virgin Islands (US)'), ('WF', 'Wallis & Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe'), ('AX', '\xc5land Islands')], max_length=2), - ), - migrations.AlterField( - model_name='meeting', - name='time_zone', - field=models.CharField(blank=True, choices=[(b'', b'---------'), (b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Atyrau', b'Asia/Atyrau'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Famagusta', b'Asia/Famagusta'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yangon', b'Asia/Yangon'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Saratov', b'Europe/Saratov'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')], max_length=255), - ), - ] diff --git a/ietf/meeting/migrations/0047_import_shared_audio_files.py b/ietf/meeting/migrations/0047_import_shared_audio_files.py deleted file mode 100644 index f06bdeeb9..000000000 --- a/ietf/meeting/migrations/0047_import_shared_audio_files.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-07 11:59 -from __future__ import unicode_literals - -import os - -from django.db import migrations -from ietf.secr.proceedings.proc_utils import import_audio_files - - -def purge_missing_files(apps, meeting): - Document = apps.get_model('doc', 'Document') - url = 'https://www.ietf.org/audio/ietf{}'.format(meeting.number) - documents = Document.objects.filter(external_url__startswith=url) - for document in documents: - filename = document.external_url.split('/')[-1] - if not os.path.exists(os.path.join('/a/www/audio/ietf{}'.format(meeting.number),filename)): - print "Removing missing recording: {} ({})".format(filename,document.pk) - document.delete() - -def forward(apps, schema_editor): - Meeting = apps.get_model('meeting', 'Meeting') - Document = apps.get_model('doc', 'Document') - for meeting in Meeting.objects.filter(number__in=range(94,98)): - print '\nMeeting #{}:'.format(meeting.number) - purge_missing_files(apps, meeting) - before = Document.objects.filter(type='recording').count() - import_audio_files(meeting) - after = Document.objects.filter(type='recording').count() - print ' {} Documents Added'.format(after - before) - -def backward(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0046_auto_20170201_0857'), - ] - - operations = [ - migrations.RunPython(forward, backward) - ] diff --git a/ietf/meeting/migrations/0048_recreate_97_attendees.py b/ietf/meeting/migrations/0048_recreate_97_attendees.py deleted file mode 100644 index 2684de9ea..000000000 --- a/ietf/meeting/migrations/0048_recreate_97_attendees.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.6 on 2017-03-25 12:01 -from __future__ import unicode_literals - -from django.db import migrations -from ietf.meeting.utils import create_proceedings_templates - -def forward(apps, schema_editor): - Meeting = apps.get_model('meeting', 'Meeting') - DBTemplate = apps.get_model('dbtemplate', 'DBTemplate') - - meeting = Meeting.objects.get(number=97) - template = DBTemplate.objects.get(path='/meeting/proceedings/97/attendees.html') - template.delete() - create_proceedings_templates(meeting) - -def backward(apps, schema_editor): - pass - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0047_import_shared_audio_files'), - ] - - operations = [ - migrations.RunPython(forward, backward) - ] diff --git a/ietf/meeting/migrations/0049_auto_20170412_0528.py b/ietf/meeting/migrations/0049_auto_20170412_0528.py deleted file mode 100644 index 2f82b3c54..000000000 --- a/ietf/meeting/migrations/0049_auto_20170412_0528.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-04-12 05:28 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0048_recreate_97_attendees'), - ] - - operations = [ - migrations.AlterField( - model_name='meeting', - name='time_zone', - field=models.CharField(blank=True, choices=[(b'', b'---------'), (b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Punta_Arenas', b'America/Punta_Arenas'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Atyrau', b'Asia/Atyrau'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Famagusta', b'Asia/Famagusta'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yangon', b'Asia/Yangon'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Saratov', b'Europe/Saratov'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')], max_length=255), - ), - ] diff --git a/ietf/meeting/migrations/0050_add_room_resources.py b/ietf/meeting/migrations/0050_add_room_resources.py deleted file mode 100644 index b056f19bc..000000000 --- a/ietf/meeting/migrations/0050_add_room_resources.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright The IETF Trust 2017, All Rights Reserved -# -*- coding: utf-8 -*- - -from __future__ import unicode_literals - -from django.db import migrations - - -new_room_resources = [ - ('u-shape', True, 0, 'boardroom-layout.png', 'Experimental Room Setup (U-Shape and classroom)', - 'Experimental Room Setup (U-Shape and classroom, subject to availability)', None), - ('flipcharts', True, 0, 'flipchart.png', 'Flipcharts', - 'Flipchars', 'Flipcharts: please specify number in Special Requests field'), -] - -unused_room_resources = [ - 'boardroom', - 'project', - 'proj2', - 'meetecho', -] - -def forwards(apps,schema_editor): - RoomResourceName = apps.get_model('name','RoomResourceName') - ResourceAssociation = apps.get_model('meeting','ResourceAssociation') - - for item in new_room_resources: - slug, used, order, icon, name, desc, help = item - if not help: - help = desc - name, __ = RoomResourceName.objects.get_or_create(slug=slug, name=name, desc=desc, used=used, order=order) - ResourceAssociation.objects.get_or_create(name=name, icon=icon, desc=help) - - for slug in unused_room_resources: - res = RoomResourceName.objects.get(slug=slug) - res.used = False - res.save() - -def backwards(apps,schema_editor): - RoomResourceName = apps.get_model('name','RoomResourceName') - ResourceAssociation = apps.get_model('meeting','ResourceAssociation') - - for item in new_room_resources: - slug, used, order, icon, name, desc, help = item - if not help: - help = desc - RoomResourceName.objects.filter(slug=slug, name=name, desc=desc, used=used, order=order).delete() - ResourceAssociation.objects.filter(name=name, icon=icon, desc=help).delete() - - for slug in unused_room_resources: - res = RoomResourceName.objects.get(slug=slug) - res.used = True - res.save() - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0049_auto_20170412_0528'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/meeting/migrations/0051_auto_20170511_0449.py b/ietf/meeting/migrations/0051_auto_20170511_0449.py deleted file mode 100644 index 263cff819..000000000 --- a/ietf/meeting/migrations/0051_auto_20170511_0449.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-11 04:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0050_add_room_resources'), - ] - - operations = [ - migrations.AlterField( - model_name='session', - name='resources', - field=models.ManyToManyField(blank=True, to='meeting.ResourceAssociation'), - ), - ] diff --git a/ietf/meeting/migrations/0052_floorplan_short.py b/ietf/meeting/migrations/0052_floorplan_short.py deleted file mode 100644 index 4a82ddf7e..000000000 --- a/ietf/meeting/migrations/0052_floorplan_short.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-06-12 02:45 -from __future__ import unicode_literals - -from django.db import migrations, models - - -def forwards(apps, schema_editor): - floors = { - # id, meeting, name, short - 1: ("Berlin Intercontinental Floor 1", "1"), - 2: ("Berlin Intercontinental Floor 2", "2"), - 3: ("Berlin Intercontinental Floor 14", "14"), - 4: ("Seoul Conrad Floor 3", "3"), - 5: ("Seoul Conrad Floor 5", "5"), - 6: ("Seoul Conrad Floor 6", "6"), - 7: ("Chicago Swissotel Ballroom Level", "BL"), - 8: ("Chicago Swissotel Concourse Level", "CC"), - 9: ("Chicago Swissotel Floor 2", "2"), - 10:("Chicago Swissotel Floor 3", "3"), - } - FloorPlan = apps.get_model('meeting', "FloorPlan") - for f in FloorPlan.objects.all(): - name, short = floors[f.pk] - assert f.name == name, ("Unexpected floorplan name. Expected '%s' for FlooPlan#%s, found '%s' in the database"%(name, f.id, f.name)) - f.short = short - f.save() - -def backwards(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0051_auto_20170511_0449'), - ] - - operations = [ - migrations.AddField( - model_name='floorplan', - name='short', - field=models.CharField(default=b'', max_length=2), - ), - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/meeting/migrations/0053_important_date.py b/ietf/meeting/migrations/0053_important_date.py deleted file mode 100644 index 6ed55a09a..000000000 --- a/ietf/meeting/migrations/0053_important_date.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-20 06:10 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0025_add-important-dates'), - ('meeting', '0052_floorplan_short'), - ] - - operations = [ - migrations.CreateModel( - name='ImportantDate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateField()), - ('meeting', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting')), - ('name', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.ImportantDateName')), - ], - options={'ordering': ['-meeting','date']}, - ), - ] diff --git a/ietf/meeting/migrations/0054_earlier_important_dates.py b/ietf/meeting/migrations/0054_earlier_important_dates.py deleted file mode 100644 index 2dbed6ddb..000000000 --- a/ietf/meeting/migrations/0054_earlier_important_dates.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-20 06:14 -from __future__ import unicode_literals - -from django.db import migrations - -import datetime - -def forward(apps,schema_editor): - Meeting = apps.get_model('meeting','Meeting') - ImportantDate = apps.get_model('meeting', 'ImportantDate') - ImportantDateName = apps.get_model('name', 'ImportantDateName') - - for num in [98,99]: - meeting = Meeting.objects.get(number=num) - for datename in ImportantDateName.objects.filter(used=True): - ImportantDate.objects.create(meeting=meeting,name=datename,date=meeting.date+datetime.timedelta(days=datename.default_offset_days-1)) - - ImportantDate.objects.filter(meeting__number=99,name__slug='openreg').update(date='2017-03-27') - - ImportantDate.objects.filter(meeting__number=98,name__slug='openreg').update(date='2016-11-28') - ImportantDate.objects.filter(meeting__number=98,name__slug='opensched').update(date='2016-12-19') - -def reverse(apps,schema_editor): - ImportantDate = apps.get_model('meeting', 'ImportantDate') - ImportantDate.objects.filter(meeting__number__in=[99,98]).delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0053_important_date'), - ('name', '0026_popuulate-important-date-names'), - ] - - operations = [ - migrations.RunPython(forward,reverse), - ] diff --git a/ietf/meeting/migrations/0055_old_id_cutoffs.py b/ietf/meeting/migrations/0055_old_id_cutoffs.py deleted file mode 100644 index a8f9ca636..000000000 --- a/ietf/meeting/migrations/0055_old_id_cutoffs.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-21 01:35 -from __future__ import unicode_literals - -from django.db import migrations -import datetime - -def forward(apps, schema_editor): - ImportantDate = apps.get_model('meeting','ImportantDate') - Meeting = apps.get_model('meeting','Meeting') - for m in Meeting.objects.filter(type='ietf').exclude(importantdate__isnull=False): - if m.idsubmit_cutoff_day_offset_00 == m.idsubmit_cutoff_day_offset_01 : - ImportantDate.objects.create( - name_id='idcutoff', - meeting=m, - date=m.date-datetime.timedelta(days=m.idsubmit_cutoff_day_offset_00) - ) - else: - ImportantDate.objects.create( - name_id='00cutoff', - meeting=m, - date=m.date-datetime.timedelta(days=m.idsubmit_cutoff_day_offset_00) - ) - ImportantDate.objects.create( - name_id='01cutoff', - meeting=m, - date=m.date-datetime.timedelta(days=m.idsubmit_cutoff_day_offset_01) - ) - - -def reverse(apps, schema_editor): - Meeting = apps.get_model('meeting','Meeting') - # This is a simple reverse implementation. If a reverse is needed a significant - # time after the forward is run (as in multiple meeting cycles), a more considered - # implemenation should be created reflecting any assumptions that have changed in - # that time. - for m in Meeting.objects.filter(type='ietf'): - if m.importantdate_set.count()==2: - m.importantdate_set.all().delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0054_earlier_important_dates'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/meeting/migrations/0056_fix-slide-name-slugs.py b/ietf/meeting/migrations/0056_fix-slide-name-slugs.py deleted file mode 100644 index e287a5f5a..000000000 --- a/ietf/meeting/migrations/0056_fix-slide-name-slugs.py +++ /dev/null @@ -1,201 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-23 08:27 -from __future__ import unicode_literals, print_function - -import os -import copy -import sys - -from django.conf import settings -from django.db import migrations -from django.core.exceptions import ObjectDoesNotExist - -import debug # pyflakes:ignore - -def get_materials_path(meeting): - return os.path.join(settings.AGENDA_PATH,meeting.number) - -def get_file_path(self): - if not hasattr(self, '_cached_file_path'): - if self.type_id == "draft": - if self.is_dochistory(): - self._cached_file_path = settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR - else: - if self.get_state_slug() == "rfc": - self._cached_file_path = settings.RFC_PATH - else: - draft_state = self.get_state('draft') - if draft_state and draft_state.slug == 'active': - self._cached_file_path = settings.INTERNET_DRAFT_PATH - else: - self._cached_file_path = settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR - elif self.type_id in ("agenda", "minutes", "slides", "bluesheets"): - doc = self.doc if isinstance(self, DocHistory) else self - if doc.session_set.exists(): - meeting = doc.session_set.first().meeting - self._cached_file_path = os.path.join(get_materials_path(meeting), self.type_id) + "/" - else: - self._cached_file_path = "" - elif self.type_id == "charter": - self._cached_file_path = settings.CHARTER_PATH - elif self.type_id == "conflrev": - self._cached_file_path = settings.CONFLICT_REVIEW_PATH - elif self.type_id == "statchg": - self._cached_file_path = settings.STATUS_CHANGE_PATH - else: - self._cached_file_path = settings.DOCUMENT_PATH_PATTERN.format(doc=self) - return self._cached_file_path - -def get_base_name(self): - if not hasattr(self, '_cached_base_name'): - if self.type_id == 'draft': - if self.is_dochistory(): - self._cached_base_name = "%s-%s.txt" % (self.doc.name, self.rev) - else: - if self.get_state_slug() == 'rfc': - self._cached_base_name = "%s.txt" % self.canonical_name() - else: - self._cached_base_name = "%s-%s.txt" % (self.name, self.rev) - elif self.type_id in ["slides", "agenda", "minutes", "bluesheets", ]: - if self.external_url: - # we need to remove the extension for the globbing below to work - self._cached_base_name = self.external_url - else: - self._cached_base_name = "%s.txt" % self.canonical_name() # meeting materials are unversioned at the moment - elif self.type_id == 'review': - self._cached_base_name = "%s.txt" % self.name - else: - if self.rev: - self._cached_base_name = "%s-%s.txt" % (self.canonical_name(), self.rev) - else: - self._cached_base_name = "%s.txt" % (self.canonical_name(), ) - return self._cached_base_name - - -def get_file_name(self): - if not hasattr(self, '_cached_file_name'): - self._cached_file_name = os.path.join(self.get_file_path(), self.get_base_name()) - return self._cached_file_name - -def get_state_slug(self, state_type=None): - """Get state of type, or default if not specified, returning - the slug of the state or None. This frees the caller of having - to check against None before accessing the slug for a - comparison.""" - s = self.get_state(state_type) - if s: - return s.slug - else: - return None - -def get_state(self, state_type=None): - """Get state of type, or default state for document type if - not specified. Uses a local cache to speed multiple state - reads up.""" - if self.pk == None: # states is many-to-many so not in database implies no state - return None - - if state_type == None: - state_type = self.type_id - - if not hasattr(self, "state_cache") or self.state_cache == None: - self.state_cache = {} - for s in self.states.all(): - self.state_cache[s.type_id] = s - - return self.state_cache.get(state_type, None) - -def canonical_name(self): - if not hasattr(self, '_canonical_name'): - name = self.name - if self.type_id == "draft" and self.get_state_slug() == "rfc": - a = self.docalias_set.filter(name__startswith="rfc").first() - if a: - name = a.name - elif self.type_id == "charter": - from ietf.doc.utils_charter import charter_name_for_group # Imported locally to avoid circular imports - try: - name = charter_name_for_group(self.chartered_group) - except ObjectDoesNotExist: - pass - self._canonical_name = name - return self._canonical_name - -def move_related_objects(source, target, file, verbose=False): - '''Find all related objects and migrate''' - related_objects = [ f for f in source._meta.get_fields() - if (f.one_to_many or f.one_to_one) - and f.auto_created and not f.concrete ] - for related_object in related_objects: - accessor = related_object.get_accessor_name() - field_name = related_object.field.name - try: - queryset = getattr(source, accessor).all() - if verbose: - print("Merging {}:{}".format(accessor,queryset.count()),file=file) - kwargs = { field_name:target } - queryset.update(**kwargs) - except Exception as e: - print(str(e)) - -def fix_exturl(d): - filename = d.get_file_name() - new = filename.replace('_', '-') - if os.path.exists(filename): - os.rename(filename, new) - elif not os.path.exists(new): - print(" ** Neither old (%s) or new (%s) filename found" % (filename, new)) - d.external_url = d.external_url.replace('_', '-') - -def forwards(apps, schema_editor): - global Document, DocHistory, DocAlias - Document = apps.get_model('doc', 'Document') - DocHistory = apps.get_model('doc', 'DocHistory') - DocAlias = apps.get_model('doc', 'DocAlias') - # - Document.get_file_name = get_file_name - Document.get_base_name = get_base_name - Document.get_file_path = get_file_path - Document.get_state_slug = get_state_slug - Document.get_state = get_state - Document.canonical_name = canonical_name - # - DocHistory.get_file_name = get_file_name - DocHistory.get_base_name = get_base_name - DocHistory.get_file_path = get_file_path - DocHistory.get_state_slug = get_state_slug - DocHistory.get_state = get_state - DocHistory.canonical_name = canonical_name - - - print("") - for doc in Document.objects.filter(name__contains='_').filter(name__startswith='slides'): - for hdoc in DocHistory.objects.filter(name=doc.name): - hdoc.name = hdoc.name.replace('_', '-') - fix_exturl(hdoc) - hdoc.save() - old_doc = copy.deepcopy(doc) - doc.name = doc.name.replace('_', '-') - fix_exturl(doc) - doc.save() - for old_alias in old_doc.docalias_set.all(): - aname = old_alias.name.replace('_', '-') - print("New alias %s" % aname) - alias = DocAlias.objects.create(name=aname, document=doc) - move_related_objects(old_alias, alias, sys.stdout, verbose=True) - old_alias.delete() - move_related_objects(old_doc, doc, sys.stdout, verbose=False) - old_doc.delete() - -def backwards(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0055_old_id_cutoffs'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/meeting/migrations/0057_meeting_days.py b/ietf/meeting/migrations/0057_meeting_days.py deleted file mode 100644 index 604949ff8..000000000 --- a/ietf/meeting/migrations/0057_meeting_days.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-10-25 03:17 -from __future__ import unicode_literals - -import django -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0056_fix-slide-name-slugs'), - ] - - operations = [ - migrations.AddField( - model_name='meeting', - name='days', - field=models.IntegerField(default=7, validators=[django.core.validators.MinValueValidator(1)], - help_text=b'The number of days the meeting lasts'), - ), - ] diff --git a/ietf/meeting/migrations/0058_set_new_field_meeting_days_values.py b/ietf/meeting/migrations/0058_set_new_field_meeting_days_values.py deleted file mode 100644 index 6d6afb7eb..000000000 --- a/ietf/meeting/migrations/0058_set_new_field_meeting_days_values.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-10-25 03:22 -from __future__ import unicode_literals - -from django.db import migrations - - -def forwards(apps, schema_editor): - Meeting = apps.get_model('meeting', 'Meeting') - for m in Meeting.objects.all(): - if m.type_id == 'ietf': - if m.number.isdigit() and int(m.number) >= 100: - m.days = 7 - else: - m.days = 6 - else: - m.days = 1 - m.save() - -def backwards(apps, schema_editor): - pass - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0057_meeting_days'), - ('submit', '0021_submissioncheck_time_default'), # for schema vs. data migration ordering within release - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/meeting/migrations/0059_meeting_show_important_dates.py b/ietf/meeting/migrations/0059_meeting_show_important_dates.py deleted file mode 100644 index f226acd2c..000000000 --- a/ietf/meeting/migrations/0059_meeting_show_important_dates.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-11-06 08:26 -from __future__ import unicode_literals - -import datetime - -from django.db import migrations, models - -def forwards(apps, schema_editor): - Meeting = apps.get_model('meeting', 'Meeting') - stop_date = datetime.date.today() + datetime.timedelta(days=30) - for m in Meeting.objects.filter(show_important_dates=False): - if m.date < stop_date: - m.show_important_dates = True - m.save() - -def backwards(apps, schema_editor): - pass - - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0058_set_new_field_meeting_days_values'), - ] - - operations = [ - migrations.AddField( - model_name='meeting', - name='show_important_dates', - field=models.BooleanField(default=False), - ), - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/message/migrations/0001_initial.py b/ietf/message/migrations/0001_initial.py index 2f2c73665..6a004fd87 100644 --- a/ietf/message/migrations/0001_initial.py +++ b/ietf/message/migrations/0001_initial.py @@ -1,55 +1,85 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations import datetime +from django.db import migrations, models +import django.db.models.deletion +import email.utils +import ietf.utils.models class Migration(migrations.Migration): + initial = True + dependencies = [ + ('group', '0001_initial'), + ('name', '0001_initial'), ('person', '0001_initial'), ('doc', '0001_initial'), - ('group', '0001_initial'), ] operations = [ + migrations.CreateModel( + name='AnnouncementFrom', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('address', models.CharField(max_length=255)), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('name', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.RoleName')), + ], + options={ + 'verbose_name_plural': 'Announcement From addresses', + }, + ), migrations.CreateModel( name='Message', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), ('subject', models.CharField(max_length=255)), ('frm', models.CharField(max_length=255)), ('to', models.CharField(max_length=1024)), - ('cc', models.CharField(max_length=1024, blank=True)), - ('bcc', models.CharField(max_length=255, blank=True)), - ('reply_to', models.CharField(max_length=255, blank=True)), + ('cc', models.CharField(blank=True, max_length=1024)), + ('bcc', models.CharField(blank=True, max_length=255)), + ('reply_to', models.CharField(blank=True, max_length=255)), ('body', models.TextField()), - ('content_type', models.CharField(default=b'text/plain', max_length=255, blank=True)), - ('by', models.ForeignKey(to='person.Person')), - ('related_docs', models.ManyToManyField(to='doc.Document', blank=True)), - ('related_groups', models.ManyToManyField(to='group.Group', blank=True)), + ('content_type', models.CharField(blank=True, default=b'text/plain', max_length=255)), + ('msgid', models.CharField(blank=True, default=email.utils.make_msgid, max_length=255, null=True)), + ('by', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('related_docs', models.ManyToManyField(blank=True, to='doc.Document')), + ('related_groups', models.ManyToManyField(blank=True, to='group.Group')), ], options={ 'ordering': ['time'], }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='MessageAttachment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('filename', models.CharField(blank=True, db_index=True, max_length=255)), + ('content_type', models.CharField(blank=True, max_length=255)), + ('encoding', models.CharField(blank=True, max_length=255)), + ('removed', models.BooleanField(default=False)), + ('body', models.TextField()), + ('message', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='message.Message')), + ], ), migrations.CreateModel( name='SendQueue', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), - ('send_at', models.DateTimeField(null=True, blank=True)), - ('sent_at', models.DateTimeField(null=True, blank=True)), + ('send_at', models.DateTimeField(blank=True, null=True)), + ('sent_at', models.DateTimeField(blank=True, null=True)), ('note', models.TextField(blank=True)), - ('by', models.ForeignKey(to='person.Person')), - ('message', models.ForeignKey(to='message.Message')), + ('by', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('message', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='message.Message')), ], options={ 'ordering': ['time'], }, - bases=(models.Model,), ), ] diff --git a/ietf/message/migrations/0002_messageattachment.py b/ietf/message/migrations/0002_messageattachment.py deleted file mode 100644 index a53e4bb51..000000000 --- a/ietf/message/migrations/0002_messageattachment.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('message', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='MessageAttachment', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('filename', models.CharField(db_index=True, max_length=255, blank=True)), - ('content_type', models.CharField(max_length=255, blank=True)), - ('encoding', models.CharField(max_length=255, blank=True)), - ('removed', models.BooleanField(default=False)), - ('body', models.TextField()), - ('message', models.ForeignKey(to='message.Message')), - ], - options={ - }, - bases=(models.Model,), - ), - ] diff --git a/ietf/message/migrations/0003_message_msgid.py b/ietf/message/migrations/0003_message_msgid.py deleted file mode 100644 index 729b0fe4f..000000000 --- a/ietf/message/migrations/0003_message_msgid.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-03 13:04 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('message', '0002_messageattachment'), - ] - - operations = [ - migrations.AddField( - model_name='message', - name='msgid', - field=models.CharField(blank=True, default=None, max_length=255, null=True), - ), - ] diff --git a/ietf/message/migrations/0004_change_msgid_default.py b/ietf/message/migrations/0004_change_msgid_default.py deleted file mode 100644 index 814d1fa29..000000000 --- a/ietf/message/migrations/0004_change_msgid_default.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-03 13:10 -from __future__ import unicode_literals - -from django.db import migrations, models -import email.utils - - -class Migration(migrations.Migration): - - dependencies = [ - ('message', '0003_message_msgid'), - ] - - operations = [ - migrations.AlterField( - model_name='message', - name='msgid', - field=models.CharField(blank=True, default=email.utils.make_msgid, max_length=255, null=True), - ), - ] diff --git a/ietf/message/migrations/0005_announcementfrom.py b/ietf/message/migrations/0005_announcementfrom.py deleted file mode 100644 index 0480384ba..000000000 --- a/ietf/message/migrations/0005_announcementfrom.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-28 11:36 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0011_auto_20170301_0332'), - ('name', '0024_merge_20170606_1320'), - ('message', '0004_change_msgid_default'), - ] - - operations = [ - migrations.CreateModel( - name='AnnouncementFrom', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('address', models.EmailField(max_length=254)), - ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), - ('name', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.RoleName')), - ], - ), - ] diff --git a/ietf/message/migrations/0006_add_announcement_from.py b/ietf/message/migrations/0006_add_announcement_from.py deleted file mode 100644 index 0b63f7ae8..000000000 --- a/ietf/message/migrations/0006_add_announcement_from.py +++ /dev/null @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-05 16:10 -from __future__ import unicode_literals - -from django.db import migrations - - -def forwards(apps, schema_editor): - AnnouncementFrom = apps.get_model('message', 'AnnouncementFrom') - Group = apps.get_model('group', 'Group') - RoleName = apps.get_model('name', 'RoleName') - - chair = RoleName.objects.get(slug='chair') - admdir = RoleName.objects.get(slug='admdir') - execdir = RoleName.objects.get(slug='execdir') - ceo = RoleName.objects.get(slug='ceo') - secr = RoleName.objects.get(slug='secr') - - # IETF Chair - ietf = Group.objects.get(acronym='ietf') - AnnouncementFrom.objects.create(name=chair,group=ietf,address='IETF Chair ') - AnnouncementFrom.objects.create(name=chair,group=ietf,address='The IESG ') - - # IAB Chair - iab = Group.objects.get(acronym='iab') - AnnouncementFrom.objects.create(name=chair,group=iab,address='IAB Chair ') - - # IAB Execdir - AnnouncementFrom.objects.create(name=execdir,group=iab,address='IAB Executive Administrative Manager ') - AnnouncementFrom.objects.create(name=execdir,group=iab,address='IAB Chair ') - - # IAD - AnnouncementFrom.objects.create(name=admdir,group=ietf,address='IETF Administrative Director ') - AnnouncementFrom.objects.create(name=admdir,group=ietf,address='The IETF Trust ') - AnnouncementFrom.objects.create(name=admdir,group=ietf,address='ISOC CEO ') - AnnouncementFrom.objects.create(name=admdir,group=ietf,address='IAOC Chair ') - - # RSOC Chair - rsoc = Group.objects.get(acronym='rsoc') - AnnouncementFrom.objects.create(name=chair,group=rsoc,address='RSOC Chair ') - - # IAOC Chair - iaoc = Group.objects.get(acronym='iaoc') - AnnouncementFrom.objects.create(name=chair,group=iaoc,address='IAOC Chair ') - - # RSE Chair - rse = Group.objects.get(acronym='rse') - AnnouncementFrom.objects.create(name=chair,group=rse,address='RFC Series Editor ') - - # Mentor Chair - mentor = Group.objects.get(acronym='mentor') - AnnouncementFrom.objects.create(name=chair,group=mentor,address='IETF Mentoring Program ') - - # ISOC CEO - isoc = Group.objects.get(acronym='isoc') - AnnouncementFrom.objects.create(name=ceo,group=isoc,address='ISOC CEO ') - - # ISOC BOARD OF TRUSTEES - isocbot = Group.objects.get(acronym='isocbot') - AnnouncementFrom.objects.create(name=chair,group=isocbot,address='ISOC Board of Trustees ') - - # IETF TRUST - ietftrust = Group.objects.get(acronym='ietf-trust') - AnnouncementFrom.objects.create(name=chair,group=ietftrust,address='The IETF Trust ') - - # Misc - secretariat = Group.objects.get(acronym='secretariat') - AnnouncementFrom.objects.create(name=secr,group=secretariat,address='IETF Secretariat ') - AnnouncementFrom.objects.create(name=secr,group=secretariat,address='IESG Secretary ') - AnnouncementFrom.objects.create(name=secr,group=secretariat,address='Internet-Drafts Administrator ') - AnnouncementFrom.objects.create(name=secr,group=secretariat,address='IETF Agenda ') - AnnouncementFrom.objects.create(name=secr,group=secretariat,address='IETF Registrar ') - AnnouncementFrom.objects.create(name=secr,group=secretariat,address='IETF Executive Director ') - -def backwards(apps, schema_editor): - AnnouncementFrom = apps.get_model('announcement', "AnnouncementFrom") - AnnouncementFrom.objects.all().delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('message', '0005_announcementfrom'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/message/migrations/0007_auto_20170731_0508.py b/ietf/message/migrations/0007_auto_20170731_0508.py deleted file mode 100644 index e3cc7e397..000000000 --- a/ietf/message/migrations/0007_auto_20170731_0508.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-31 05:08 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('message', '0006_add_announcement_from'), - ] - - operations = [ - migrations.AlterModelOptions( - name='announcementfrom', - options={'verbose_name_plural': 'Announcement From addresses'}, - ), - ] diff --git a/ietf/message/migrations/0008_auto_20170906_1525.py b/ietf/message/migrations/0008_auto_20170906_1525.py deleted file mode 100644 index 4845ba809..000000000 --- a/ietf/message/migrations/0008_auto_20170906_1525.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-09-06 15:25 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('message', '0007_auto_20170731_0508'), - ] - - operations = [ - migrations.AlterField( - model_name='announcementfrom', - name='address', - field=models.CharField(max_length=255), - ), - ] diff --git a/ietf/name/migrations/0001_initial.py b/ietf/name/migrations/0001_initial.py index 9a45ae043..fab75d062 100644 --- a/ietf/name/migrations/0001_initial.py +++ b/ietf/name/migrations/0001_initial.py @@ -1,11 +1,16 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models class Migration(migrations.Migration): + initial = True + dependencies = [ ] @@ -13,7 +18,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='BallotPositionName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), @@ -21,15 +26,14 @@ class Migration(migrations.Migration): ('blocking', models.BooleanField(default=False)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='ConstraintName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), @@ -37,30 +41,58 @@ class Migration(migrations.Migration): ('penalty', models.IntegerField(default=0, help_text=b'The penalty for violating this kind of constraint; for instance 10 (small penalty) or 10000 (large penalty)')), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( - name='DBTemplateTypeName', + name='ContinentName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='CountryName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ('in_eu', models.BooleanField(default=False, verbose_name=b'In EU')), + ('continent', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.ContinentName')), + ], + options={ + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='DBTemplateTypeName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='DocRelationshipName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), @@ -68,325 +100,446 @@ class Migration(migrations.Migration): ('revname', models.CharField(max_length=255)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='DocReminderTypeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='DocTagName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='DocTypeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ('prefix', models.CharField(default=b'', max_length=16)), + ], + options={ + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='DocUrlTagName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='DraftSubmissionStateName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), - ('next_states', models.ManyToManyField(related_name='previous_states', to='name.DraftSubmissionStateName', blank=True)), + ('next_states', models.ManyToManyField(blank=True, related_name='previous_states', to='name.DraftSubmissionStateName')), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='FeedbackTypeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='FormalLanguageName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='GroupMilestoneStateName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='GroupStateName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='GroupTypeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), + ('verbose_name', models.CharField(default=b'', max_length=255)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='ImportantDateName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ('default_offset_days', models.SmallIntegerField()), + ], + options={ + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='IntendedStdLevelName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='IprDisclosureStateName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='IprEventTypeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='IprLicenseTypeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='LiaisonStatementEventTypeName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='LiaisonStatementPurposeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='LiaisonStatementState', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='LiaisonStatementTagName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='MeetingTypeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='NomineePositionStateName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='ReviewRequestStateName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='ReviewResultName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='ReviewTypeName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='RoleName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='RoomResourceName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='SessionStatusName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='StdLevelName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='StreamName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), migrations.CreateModel( name='TimeSlotTypeName', fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), ('name', models.CharField(max_length=255)), ('desc', models.TextField(blank=True)), ('used', models.BooleanField(default=True)), ('order', models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + 'ordering': ['order', 'name'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='TopicAudienceName', + fields=[ + ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('desc', models.TextField(blank=True)), + ('used', models.BooleanField(default=True)), + ('order', models.IntegerField(default=0)), + ], + options={ + 'ordering': ['order', 'name'], 'abstract': False, }, - bases=(models.Model,), ), ] diff --git a/ietf/name/migrations/0002_auto_20150208_1008.py b/ietf/name/migrations/0002_auto_20150208_1008.py deleted file mode 100644 index 7220efa27..000000000 --- a/ietf/name/migrations/0002_auto_20150208_1008.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def add_bluesheet_names(apps, schema_editor): - DocTypeName = apps.get_model('name', 'DocTypeName') - StateType = apps.get_model('doc', 'StateType') - State = apps.get_model('doc', 'State') - # - DocTypeName.objects.create(slug="bluesheets",name="Bluesheets") - StateType.objects.create(slug='bluesheets',label='State') - State.objects.create(type_id='bluesheets',slug='active',name='Active') - State.objects.create(type_id='bluesheets',slug='deleted',name='Deleted') - -def del_bluesheet_names(apps, schema_editor): - DocTypeName = apps.get_model('name', 'DocTypeName') - StateType = apps.get_model('doc', 'StateType') - State = apps.get_model('doc', 'State') - # - DocTypeName.objects.filter(slug="bluesheets").delete() - StateType.objects.filter(slug='bluesheets').delete() - State.objects.filter(type_id='bluesheets').delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0001_initial'), - ('doc', '0001_initial'), - ] - - operations = [ - migrations.RunPython(add_bluesheet_names, del_bluesheet_names), - ] diff --git a/ietf/name/migrations/0003_fix_ipr_none_selected_choice.py b/ietf/name/migrations/0003_fix_ipr_none_selected_choice.py deleted file mode 100644 index cf1994cb5..000000000 --- a/ietf/name/migrations/0003_fix_ipr_none_selected_choice.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def fix_non_selected_choice(apps, schema_editor): - apps.get_model("name", "IprLicenseTypeName").objects.filter(slug="none-selected").update(desc="[None selected]") - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0002_auto_20150208_1008'), - ] - - operations = [ - migrations.RunPython(fix_non_selected_choice) - ] diff --git a/ietf/name/migrations/0004_auto_20150318_1140.py b/ietf/name/migrations/0004_auto_20150318_1140.py deleted file mode 100644 index c4274b886..000000000 --- a/ietf/name/migrations/0004_auto_20150318_1140.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - - - -def make_new_slot_types(apps, schema_editor): - - TimeSlotTypeName = apps.get_model("name","TimeSlotTypeName") - TimeSlotTypeName.objects.create(slug='lead',name='Leadership',desc='Leadership Meetings',used=True) - TimeSlotTypeName.objects.create(slug='offagenda',name='Off Agenda',desc='Other Meetings Not Published on Agenda',used=True) - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0003_fix_ipr_none_selected_choice'), - ] - - operations = [ - migrations.RunPython(make_new_slot_types) - ] diff --git a/ietf/name/migrations/0005_add_sug_replaces.py b/ietf/name/migrations/0005_add_sug_replaces.py deleted file mode 100644 index 7ed0a8d3d..000000000 --- a/ietf/name/migrations/0005_add_sug_replaces.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def add_possibly_replaces(apps, schema_editor): - - DocRelationshipName = apps.get_model("name","DocRelationshipName") - DocRelationshipName.objects.create(slug='possibly-replaces',name='Possibly Replaces',revname='Possibly Replaced By') - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0004_auto_20150318_1140'), - ] - - operations = [ - migrations.RunPython(add_possibly_replaces) - ] diff --git a/ietf/name/migrations/0006_add_liaison_names.py b/ietf/name/migrations/0006_add_liaison_names.py deleted file mode 100644 index 392ca6634..000000000 --- a/ietf/name/migrations/0006_add_liaison_names.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0005_add_sug_replaces'), - ] - - operations = [ - migrations.CreateModel( - name='LiaisonStatementEventTypeName', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order'], - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LiaisonStatementState', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order'], - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LiaisonStatementTagName', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order'], - 'abstract': False, - }, - bases=(models.Model,), - ), - ] diff --git a/ietf/name/migrations/0007_populate_liaison_names.py b/ietf/name/migrations/0007_populate_liaison_names.py deleted file mode 100644 index 212f65975..000000000 --- a/ietf/name/migrations/0007_populate_liaison_names.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def populate_names(apps, schema_editor): - # LiaisonStatementState: Pending, Approved, Dead - LiaisonStatementState = apps.get_model("name", "LiaisonStatementState") - LiaisonStatementState.objects.create(slug="pending", order=1, name="Pending") - LiaisonStatementState.objects.create(slug="approved", order=2, name="Approved") - LiaisonStatementState.objects.create(slug="posted", order=3, name="Posted") - LiaisonStatementState.objects.create(slug="dead", order=4, name="Dead") - - # LiaisonStatementEventTypeName: Submitted, Modified, Approved, Posted, Killed, Resurrected, MsgIn, MsgOut, Comment - LiaisonStatementEventTypeName = apps.get_model("name", "LiaisonStatementEventTypeName") - LiaisonStatementEventTypeName.objects.create(slug="submitted", order=1, name="Submitted") - LiaisonStatementEventTypeName.objects.create(slug="modified", order=2, name="Modified") - LiaisonStatementEventTypeName.objects.create(slug="approved", order=3, name="Approved") - LiaisonStatementEventTypeName.objects.create(slug="posted", order=4, name="Posted") - LiaisonStatementEventTypeName.objects.create(slug="killed", order=5, name="Killed") - LiaisonStatementEventTypeName.objects.create(slug="resurrected", order=6, name="Resurrected") - LiaisonStatementEventTypeName.objects.create(slug="msgin", order=7, name="MsgIn") - LiaisonStatementEventTypeName.objects.create(slug="msgout", order=8, name="MsgOut") - LiaisonStatementEventTypeName.objects.create(slug="comment", order=9, name="Comment") - - #LiaisonStatementTagName: Action Required, Action Taken - LiaisonStatementTagName = apps.get_model("name", "LiaisonStatementTagName") - LiaisonStatementTagName.objects.create(slug="required", order=1, name="Action Required") - LiaisonStatementTagName.objects.create(slug="taken", order=2, name="Action Taken") - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0006_add_liaison_names'), - ] - - operations = [ - migrations.RunPython(populate_names), - ] diff --git a/ietf/name/migrations/0008_doctypename_prefix.py b/ietf/name/migrations/0008_doctypename_prefix.py deleted file mode 100644 index c08270b85..000000000 --- a/ietf/name/migrations/0008_doctypename_prefix.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0007_populate_liaison_names'), - ] - - operations = [ - migrations.AddField( - model_name='doctypename', - name='prefix', - field=models.CharField(default=b'', max_length=16), - preserve_default=True, - ), - ] diff --git a/ietf/name/migrations/0009_auto_20151021_1102.py b/ietf/name/migrations/0009_auto_20151021_1102.py deleted file mode 100644 index 217b0c3b0..000000000 --- a/ietf/name/migrations/0009_auto_20151021_1102.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations # pyflakes:ignore - -def add_doc_type_prefix(apps, schema_editor): - DocTypeName = apps.get_model("name", "DocTypeName") - prefixes = { - u'agenda': u'agenda', - u'bluesheets': u'bluesheets', - u'charter': u'charter', - u'conflrev': u'conflict-review', - u'draft': u'draft', - u'liai-att': u'liai-att', - u'minutes': u'minutes', - u'recording': u'recording', - u'slides': u'slides', - u'statchg': u'status-change', - } - - for slug, prefix in prefixes.items(): - o = DocTypeName.objects.get(slug=slug) - o.prefix = prefix - o.save() - -def del_doc_type_prefix(apps, schema_editor): - DocTypeName = apps.get_model("name", "DocTypeName") - for o in DocTypeName.objects.all(): - o.prefix = "" - o.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0008_doctypename_prefix'), - ] - - operations = [ - migrations.RunPython(add_doc_type_prefix, del_doc_type_prefix), - - ] diff --git a/ietf/name/migrations/0010_new_liaison_names.py b/ietf/name/migrations/0010_new_liaison_names.py deleted file mode 100644 index 0123ae53d..000000000 --- a/ietf/name/migrations/0010_new_liaison_names.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def populate_names(apps, schema_editor): - LiaisonStatementEventTypeName = apps.get_model("name", "LiaisonStatementEventTypeName") - LiaisonStatementEventTypeName.objects.create(slug="private_comment", order=10, name="Private Comment") - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0009_auto_20151021_1102'), - ] - - operations = [ - migrations.RunPython(populate_names), - ] diff --git a/ietf/name/migrations/0011_add_session_status.py b/ietf/name/migrations/0011_add_session_status.py deleted file mode 100644 index d31eae87b..000000000 --- a/ietf/name/migrations/0011_add_session_status.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def populate_names(apps, schema_editor): - SessionStatusName = apps.get_model("name", "SessionStatusName") - SessionStatusName.objects.create(slug="scheda",name="Scheduled - Announcement to be sent") - SessionStatusName.objects.create(slug="canceledpa",name="Cancelled - Pre Announcement") - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0010_new_liaison_names'), - ] - - operations = [ - migrations.RunPython(populate_names), - ] diff --git a/ietf/name/migrations/0012_grouptypename_verbose_name.py b/ietf/name/migrations/0012_grouptypename_verbose_name.py deleted file mode 100644 index 14340fb22..000000000 --- a/ietf/name/migrations/0012_grouptypename_verbose_name.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0011_add_session_status'), - ] - - operations = [ - migrations.AddField( - model_name='grouptypename', - name='verbose_name', - field=models.CharField(default=b'', max_length=255), - preserve_default=True, - ), - ] diff --git a/ietf/name/migrations/0013_add_group_type_verbose_name_data.py b/ietf/name/migrations/0013_add_group_type_verbose_name_data.py deleted file mode 100644 index 2c5125159..000000000 --- a/ietf/name/migrations/0013_add_group_type_verbose_name_data.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -verbose_names = { - "wg": "Working Group", - "team": "Team", - "sdo": "Standards Organization", - "rg": "Research Group", - "rfcedtyp": "The RFC Editor", - "nomcom": "IETF/IAB Nominating Committee", - "isoc": "The Internet Society", - "irtf": "Internet Research Task Force", - "individ": "An Individual", - "ietf": "Internet Engineering Task Force", - "iab": "Internet Architecture Board", - "dir": "Area Directorate", - "area": "Area", - "ag": "Area Group", -} - -def forward(apps, schema_editor): - GroupTypeName = apps.get_model('name', 'GroupTypeName') - for slug, verbose_name in verbose_names.items(): - name = GroupTypeName.objects.get(slug=slug) - name.verbose_name = verbose_name - name.save() - -def backward(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0012_grouptypename_verbose_name'), - ] - - operations = [ - migrations.RunPython(forward, backward) - ] diff --git a/ietf/name/migrations/0014_reviewrequeststatename_reviewresultname_reviewtypename.py b/ietf/name/migrations/0014_reviewrequeststatename_reviewresultname_reviewtypename.py deleted file mode 100644 index abef1e015..000000000 --- a/ietf/name/migrations/0014_reviewrequeststatename_reviewresultname_reviewtypename.py +++ /dev/null @@ -1,60 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('group', '0008_auto_20160505_0523'), - ('name', '0013_add_group_type_verbose_name_data'), - ] - - operations = [ - migrations.CreateModel( - name='ReviewRequestStateName', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order'], - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ReviewResultName', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order'], - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ReviewTypeName', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order'], - 'abstract': False, - }, - bases=(models.Model,), - ), - ] diff --git a/ietf/name/migrations/0015_insert_review_name_data.py b/ietf/name/migrations/0015_insert_review_name_data.py deleted file mode 100644 index dac0d287d..000000000 --- a/ietf/name/migrations/0015_insert_review_name_data.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def insert_initial_review_data(apps, schema_editor): - ReviewRequestStateName = apps.get_model("name", "ReviewRequestStateName") - ReviewRequestStateName.objects.get_or_create(slug="requested", name="Requested", order=1) - ReviewRequestStateName.objects.get_or_create(slug="accepted", name="Accepted", order=2) - ReviewRequestStateName.objects.get_or_create(slug="rejected", name="Rejected", order=3) - ReviewRequestStateName.objects.get_or_create(slug="withdrawn", name="Withdrawn", order=4) - ReviewRequestStateName.objects.get_or_create(slug="overtaken", name="Overtaken by Events", order=5) - ReviewRequestStateName.objects.get_or_create(slug="no-response", name="No Response", order=6) - ReviewRequestStateName.objects.get_or_create(slug="no-review-version", name="Team Will not Review Version", order=7) - ReviewRequestStateName.objects.get_or_create(slug="no-review-document", name="Team Will not Review Document", order=8) - ReviewRequestStateName.objects.get_or_create(slug="part-completed", name="Partially Completed", order=9) - ReviewRequestStateName.objects.get_or_create(slug="completed", name="Completed", order=10) - - ReviewTypeName = apps.get_model("name", "ReviewTypeName") - ReviewTypeName.objects.get_or_create(slug="early", name="Early", order=1) - ReviewTypeName.objects.get_or_create(slug="lc", name="Last Call", order=2) - ReviewTypeName.objects.get_or_create(slug="telechat", name="Telechat", order=3) - - ReviewResultName = apps.get_model("name", "ReviewResultName") - ReviewResultName.objects.get_or_create(slug="serious-issues", name="Serious Issues", order=1) - ReviewResultName.objects.get_or_create(slug="issues", name="Has Issues", order=2) - ReviewResultName.objects.get_or_create(slug="nits", name="Has Nits", order=3) - - ReviewResultName.objects.get_or_create(slug="not-ready", name="Not Ready", order=4) - ReviewResultName.objects.get_or_create(slug="right-track", name="On the Right Track", order=5) - ReviewResultName.objects.get_or_create(slug="almost-ready", name="Almost Ready", order=6) - - ReviewResultName.objects.get_or_create(slug="ready-issues", name="Ready with Issues", order=7) - ReviewResultName.objects.get_or_create(slug="ready-nits", name="Ready with Nits", order=8) - ReviewResultName.objects.get_or_create(slug="ready", name="Ready", order=9) - - RoleName = apps.get_model("name", "RoleName") - RoleName.objects.get_or_create(slug="reviewer", name="Reviewer", order=max(r.order for r in RoleName.objects.exclude(slug="reviewer")) + 1) - - DocTypeName = apps.get_model("name", "DocTypeName") - DocTypeName.objects.get_or_create(slug="review", name="Review") - - StateType = apps.get_model("doc", "StateType") - review_state_type, _ = StateType.objects.get_or_create(slug="review", label="Review") - - State = apps.get_model("doc", "State") - State.objects.get_or_create(type=review_state_type, slug="active", name="Active", order=1) - State.objects.get_or_create(type=review_state_type, slug="deleted", name="Deleted", order=2) - -def noop(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0014_reviewrequeststatename_reviewresultname_reviewtypename'), - ('group', '0001_initial'), - ('doc', '0001_initial'), - ] - - operations = [ - migrations.RunPython(insert_initial_review_data, noop), - ] diff --git a/ietf/name/migrations/0016_auto_20161013_1010.py b/ietf/name/migrations/0016_auto_20161013_1010.py deleted file mode 100644 index dc8a041b6..000000000 --- a/ietf/name/migrations/0016_auto_20161013_1010.py +++ /dev/null @@ -1,138 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0015_insert_review_name_data'), - ] - - operations = [ - migrations.AlterModelOptions( - name='ballotpositionname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='constraintname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='dbtemplatetypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='docrelationshipname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='docremindertypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='doctagname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='doctypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='draftsubmissionstatename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='feedbacktypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='groupmilestonestatename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='groupstatename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='grouptypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='intendedstdlevelname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='iprdisclosurestatename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='ipreventtypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='iprlicensetypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='liaisonstatementeventtypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='liaisonstatementpurposename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='liaisonstatementstate', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='liaisonstatementtagname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='meetingtypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='nomineepositionstatename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='reviewrequeststatename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='reviewresultname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='reviewtypename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='rolename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='roomresourcename', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='sessionstatusname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='stdlevelname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='streamname', - options={'ordering': ['order', 'name']}, - ), - migrations.AlterModelOptions( - name='timeslottypename', - options={'ordering': ['order', 'name']}, - ), - ] diff --git a/ietf/name/migrations/0017_add_role_name_trac_admin.py b/ietf/name/migrations/0017_add_role_name_trac_admin.py deleted file mode 100644 index c28c4e196..000000000 --- a/ietf/name/migrations/0017_add_role_name_trac_admin.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forwards(apps, schema_editor): - RoleName = apps.get_model('name', 'RoleName') - RoleName.objects.create(slug='trac-admin', name='Trac Admin', - desc='Assigned permission TRAC_ADMIN in datatracker-managed Trac Wiki instances', - used=True) - -def backwards(apps, schema_editor): - RoleName = apps.get_model('name', 'RoleName') - RoleName.objects.filter(slug='trac-admin').delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0016_auto_20161013_1010'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/name/migrations/0018_iab_programs.py b/ietf/name/migrations/0018_iab_programs.py deleted file mode 100644 index a7a7f7044..000000000 --- a/ietf/name/migrations/0018_iab_programs.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def addNames(apps,schema_editor): - GroupTypeName = apps.get_model('name','GroupTypeName') - RoleName = apps.get_model('name','RoleName') - - GroupTypeName.objects.create(slug='program', name='Program', desc='Program', used=True, order=0) - RoleName.objects.create(slug='lead', name='Lead', desc='Lead member (such as the Lead of an IAB program)', used=True, order=0) - -def removeNames(apps,schema_editor): - GroupTypeName = apps.get_model('name','GroupTypeName') - RoleName = apps.get_model('name','RoleName') - GroupTypeName.objects.filter(slug='program').delete() - RoleName.objects.filter(slug='program').delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0017_add_role_name_trac_admin'), - ] - - operations = [ - migrations.RunPython(addNames,removeNames) - ] diff --git a/ietf/name/migrations/0019_add_docrelationshipname_downref_approval.py b/ietf/name/migrations/0019_add_docrelationshipname_downref_approval.py deleted file mode 100644 index 2a48b241c..000000000 --- a/ietf/name/migrations/0019_add_docrelationshipname_downref_approval.py +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright The IETF Trust 2017, All Rights Reserved -# -*- coding: utf-8 -*- - -from __future__ import unicode_literals - -from django.db import migrations - -def addDocRelationshipName(apps,schema_editor): - DocRelationshipName = apps.get_model('name','DocRelationshipName') - DocRelationshipName.objects.create( - slug = 'downref-approval', - name = 'approves downref to', - revname = 'was approved for downref by', - desc = 'Approval for downref') - -def removeDocRelationshipName(apps,schema_editor): - DocRelationshipName = apps.get_model('name','DocRelationshipName') - DocRelationshipName.objects.filter(slug='downref-approval').delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0018_iab_programs'), - ] - - operations = [ - migrations.RunPython(addDocRelationshipName,removeDocRelationshipName) - ] diff --git a/ietf/name/migrations/0020_add_topics.py b/ietf/name/migrations/0020_add_topics.py deleted file mode 100644 index f84bf46c7..000000000 --- a/ietf/name/migrations/0020_add_topics.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-24 08:25 -from __future__ import unicode_literals - -from django.db import migrations, models - -def forward(apps, schema_editor): - TopicAudienceName = apps.get_model('name','TopicAudienceName') - # """General, Nominee, Nomcom Member""" - TopicAudienceName.objects.create( - slug='general', - name='General', - desc='Anyone who can log in', - ) - TopicAudienceName.objects.create( - slug='nominees', - name='Nominees', - desc='Anyone who has accepted a Nomination for an open position', - ) - TopicAudienceName.objects.create( - slug='nomcom', - name='Nomcom Members', - desc='Members of this nomcom', - ) - -def reverse(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0019_add_docrelationshipname_downref_approval'), - ] - - operations = [ - migrations.CreateModel( - name='TopicAudienceName', - fields=[ - ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order', 'name'], - 'abstract': False, - }, - ), - migrations.RunPython(forward,reverse), - ] diff --git a/ietf/name/migrations/0020_formallanguagename.py b/ietf/name/migrations/0020_formallanguagename.py deleted file mode 100644 index 4742516f1..000000000 --- a/ietf/name/migrations/0020_formallanguagename.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0019_add_docrelationshipname_downref_approval'), - ] - - operations = [ - migrations.CreateModel( - name='FormalLanguageName', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order', 'name'], - 'abstract': False, - }, - ), - ] diff --git a/ietf/name/migrations/0021_add_formlang_names.py b/ietf/name/migrations/0021_add_formlang_names.py deleted file mode 100644 index 3375e2118..000000000 --- a/ietf/name/migrations/0021_add_formlang_names.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def insert_initial_formal_language_names(apps, schema_editor): - FormalLanguageName = apps.get_model("name", "FormalLanguageName") - FormalLanguageName.objects.get_or_create(slug="abnf", name="ABNF", desc="Augmented Backus-Naur Form", order=1) - FormalLanguageName.objects.get_or_create(slug="asn1", name="ASN.1", desc="Abstract Syntax Notation One", order=2) - FormalLanguageName.objects.get_or_create(slug="cbor", name="CBOR", desc="Concise Binary Object Representation", order=3) - FormalLanguageName.objects.get_or_create(slug="ccode", name="C Code", desc="Code in the C Programming Language", order=4) - FormalLanguageName.objects.get_or_create(slug="json", name="JSON", desc="Javascript Object Notation", order=5) - FormalLanguageName.objects.get_or_create(slug="xml", name="XML", desc="Extensible Markup Language", order=6) - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0020_formallanguagename'), - ] - - operations = [ - migrations.RunPython(insert_initial_formal_language_names, migrations.RunPython.noop) - ] diff --git a/ietf/name/migrations/0022_continentname_countryname.py b/ietf/name/migrations/0022_continentname_countryname.py deleted file mode 100644 index b0a1e91d7..000000000 --- a/ietf/name/migrations/0022_continentname_countryname.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0021_add_formlang_names'), - ] - - operations = [ - migrations.CreateModel( - name='ContinentName', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order', 'name'], - 'abstract': False, - }, - ), - migrations.CreateModel( - name='CountryName', - fields=[ - ('slug', models.CharField(max_length=32, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ('in_eu', models.BooleanField(default=False, verbose_name='In EU')), - ('continent', models.ForeignKey(to='name.ContinentName')), - ], - options={ - 'ordering': ['order', 'name'], - 'abstract': False, - }, - ), - ] diff --git a/ietf/name/migrations/0023_add_country_continent_names.py b/ietf/name/migrations/0023_add_country_continent_names.py deleted file mode 100644 index 2ee423513..000000000 --- a/ietf/name/migrations/0023_add_country_continent_names.py +++ /dev/null @@ -1,275 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def insert_initial_country_continent_names(apps, schema_editor): - ContinentName = apps.get_model("name", "ContinentName") - africa, _ = ContinentName.objects.get_or_create(slug="africa", name="Africa") - antarctica, _ = ContinentName.objects.get_or_create(slug="antarctica", name="Antarctica") - asia, _ = ContinentName.objects.get_or_create(slug="asia", name="Asia") - europe, _ = ContinentName.objects.get_or_create(slug="europe", name="Europe") - north_america, _ = ContinentName.objects.get_or_create(slug="north-america", name="North America") - oceania, _ = ContinentName.objects.get_or_create(slug="oceania", name="Oceania") - south_america, _ = ContinentName.objects.get_or_create(slug="south-america", name="South America") - - CountryName = apps.get_model("name", "CountryName") - CountryName.objects.get_or_create(slug="AD", name=u"Andorra", continent=europe) - CountryName.objects.get_or_create(slug="AE", name=u"United Arab Emirates", continent=asia) - CountryName.objects.get_or_create(slug="AF", name=u"Afghanistan", continent=asia) - CountryName.objects.get_or_create(slug="AG", name=u"Antigua and Barbuda", continent=north_america) - CountryName.objects.get_or_create(slug="AI", name=u"Anguilla", continent=north_america) - CountryName.objects.get_or_create(slug="AL", name=u"Albania", continent=europe) - CountryName.objects.get_or_create(slug="AM", name=u"Armenia", continent=asia) - CountryName.objects.get_or_create(slug="AO", name=u"Angola", continent=africa) - CountryName.objects.get_or_create(slug="AQ", name=u"Antarctica", continent=antarctica) - CountryName.objects.get_or_create(slug="AR", name=u"Argentina", continent=south_america) - CountryName.objects.get_or_create(slug="AS", name=u"American Samoa", continent=oceania) - CountryName.objects.get_or_create(slug="AT", name=u"Austria", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="AU", name=u"Australia", continent=oceania) - CountryName.objects.get_or_create(slug="AW", name=u"Aruba", continent=north_america) - CountryName.objects.get_or_create(slug="AX", name=u"Åland Islands", continent=europe) - CountryName.objects.get_or_create(slug="AZ", name=u"Azerbaijan", continent=asia) - CountryName.objects.get_or_create(slug="BA", name=u"Bosnia and Herzegovina", continent=europe) - CountryName.objects.get_or_create(slug="BB", name=u"Barbados", continent=north_america) - CountryName.objects.get_or_create(slug="BD", name=u"Bangladesh", continent=asia) - CountryName.objects.get_or_create(slug="BE", name=u"Belgium", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="BF", name=u"Burkina Faso", continent=africa) - CountryName.objects.get_or_create(slug="BG", name=u"Bulgaria", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="BH", name=u"Bahrain", continent=asia) - CountryName.objects.get_or_create(slug="BI", name=u"Burundi", continent=africa) - CountryName.objects.get_or_create(slug="BJ", name=u"Benin", continent=africa) - CountryName.objects.get_or_create(slug="BL", name=u"Saint Barthélemy", continent=north_america) - CountryName.objects.get_or_create(slug="BM", name=u"Bermuda", continent=north_america) - CountryName.objects.get_or_create(slug="BN", name=u"Brunei", continent=asia) - CountryName.objects.get_or_create(slug="BO", name=u"Bolivia", continent=south_america) - CountryName.objects.get_or_create(slug="BQ", name=u"Bonaire, Sint Eustatius and Saba", continent=north_america) - CountryName.objects.get_or_create(slug="BR", name=u"Brazil", continent=south_america) - CountryName.objects.get_or_create(slug="BS", name=u"Bahamas", continent=north_america) - CountryName.objects.get_or_create(slug="BT", name=u"Bhutan", continent=asia) - CountryName.objects.get_or_create(slug="BV", name=u"Bouvet Island", continent=antarctica) - CountryName.objects.get_or_create(slug="BW", name=u"Botswana", continent=africa) - CountryName.objects.get_or_create(slug="BY", name=u"Belarus", continent=europe) - CountryName.objects.get_or_create(slug="BZ", name=u"Belize", continent=north_america) - CountryName.objects.get_or_create(slug="CA", name=u"Canada", continent=north_america) - CountryName.objects.get_or_create(slug="CC", name=u"Cocos (Keeling) Islands", continent=asia) - CountryName.objects.get_or_create(slug="CD", name=u"Congo (the Democratic Republic of the)", continent=africa) - CountryName.objects.get_or_create(slug="CF", name=u"Central African Republic", continent=africa) - CountryName.objects.get_or_create(slug="CG", name=u"Congo", continent=africa) - CountryName.objects.get_or_create(slug="CH", name=u"Switzerland", continent=europe) - CountryName.objects.get_or_create(slug="CI", name=u"Côte d'Ivoire", continent=africa) - CountryName.objects.get_or_create(slug="CK", name=u"Cook Islands", continent=oceania) - CountryName.objects.get_or_create(slug="CL", name=u"Chile", continent=south_america) - CountryName.objects.get_or_create(slug="CM", name=u"Cameroon", continent=africa) - CountryName.objects.get_or_create(slug="CN", name=u"China", continent=asia) - CountryName.objects.get_or_create(slug="CO", name=u"Colombia", continent=south_america) - CountryName.objects.get_or_create(slug="CR", name=u"Costa Rica", continent=north_america) - CountryName.objects.get_or_create(slug="CU", name=u"Cuba", continent=north_america) - CountryName.objects.get_or_create(slug="CV", name=u"Cabo Verde", continent=africa) - CountryName.objects.get_or_create(slug="CW", name=u"Curaçao", continent=north_america) - CountryName.objects.get_or_create(slug="CX", name=u"Christmas Island", continent=asia) - CountryName.objects.get_or_create(slug="CY", name=u"Cyprus", continent=asia, in_eu=True) - CountryName.objects.get_or_create(slug="CZ", name=u"Czech Republic", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="DE", name=u"Germany", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="DJ", name=u"Djibouti", continent=africa) - CountryName.objects.get_or_create(slug="DK", name=u"Denmark", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="DM", name=u"Dominica", continent=north_america) - CountryName.objects.get_or_create(slug="DO", name=u"Dominican Republic", continent=north_america) - CountryName.objects.get_or_create(slug="DZ", name=u"Algeria", continent=africa) - CountryName.objects.get_or_create(slug="EC", name=u"Ecuador", continent=south_america) - CountryName.objects.get_or_create(slug="EE", name=u"Estonia", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="EG", name=u"Egypt", continent=africa) - CountryName.objects.get_or_create(slug="EH", name=u"Western Sahara", continent=africa) - CountryName.objects.get_or_create(slug="ER", name=u"Eritrea", continent=africa) - CountryName.objects.get_or_create(slug="ES", name=u"Spain", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="ET", name=u"Ethiopia", continent=africa) - CountryName.objects.get_or_create(slug="FI", name=u"Finland", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="FJ", name=u"Fiji", continent=oceania) - CountryName.objects.get_or_create(slug="FK", name=u"Falkland Islands [Malvinas]", continent=south_america) - CountryName.objects.get_or_create(slug="FM", name=u"Micronesia (Federated States of)", continent=oceania) - CountryName.objects.get_or_create(slug="FO", name=u"Faroe Islands", continent=europe) - CountryName.objects.get_or_create(slug="FR", name=u"France", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="GA", name=u"Gabon", continent=africa) - CountryName.objects.get_or_create(slug="GB", name=u"United Kingdom", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="GD", name=u"Grenada", continent=north_america) - CountryName.objects.get_or_create(slug="GE", name=u"Georgia", continent=asia) - CountryName.objects.get_or_create(slug="GF", name=u"French Guiana", continent=south_america) - CountryName.objects.get_or_create(slug="GG", name=u"Guernsey", continent=europe) - CountryName.objects.get_or_create(slug="GH", name=u"Ghana", continent=africa) - CountryName.objects.get_or_create(slug="GI", name=u"Gibraltar", continent=europe) - CountryName.objects.get_or_create(slug="GL", name=u"Greenland", continent=north_america) - CountryName.objects.get_or_create(slug="GM", name=u"Gambia", continent=africa) - CountryName.objects.get_or_create(slug="GN", name=u"Guinea", continent=africa) - CountryName.objects.get_or_create(slug="GP", name=u"Guadeloupe", continent=north_america) - CountryName.objects.get_or_create(slug="GQ", name=u"Equatorial Guinea", continent=africa) - CountryName.objects.get_or_create(slug="GR", name=u"Greece", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="GS", name=u"South Georgia and the South Sandwich Islands", continent=antarctica) - CountryName.objects.get_or_create(slug="GT", name=u"Guatemala", continent=north_america) - CountryName.objects.get_or_create(slug="GU", name=u"Guam", continent=oceania) - CountryName.objects.get_or_create(slug="GW", name=u"Guinea-Bissau", continent=africa) - CountryName.objects.get_or_create(slug="GY", name=u"Guyana", continent=south_america) - CountryName.objects.get_or_create(slug="HK", name=u"Hong Kong", continent=asia) - CountryName.objects.get_or_create(slug="HM", name=u"Heard Island and McDonald Islands", continent=antarctica) - CountryName.objects.get_or_create(slug="HN", name=u"Honduras", continent=north_america) - CountryName.objects.get_or_create(slug="HR", name=u"Croatia", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="HT", name=u"Haiti", continent=north_america) - CountryName.objects.get_or_create(slug="HU", name=u"Hungary", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="ID", name=u"Indonesia", continent=asia) - CountryName.objects.get_or_create(slug="IE", name=u"Ireland", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="IL", name=u"Israel", continent=asia) - CountryName.objects.get_or_create(slug="IM", name=u"Isle of Man", continent=europe) - CountryName.objects.get_or_create(slug="IN", name=u"India", continent=asia) - CountryName.objects.get_or_create(slug="IO", name=u"British Indian Ocean Territory", continent=asia) - CountryName.objects.get_or_create(slug="IQ", name=u"Iraq", continent=asia) - CountryName.objects.get_or_create(slug="IR", name=u"Iran", continent=asia) - CountryName.objects.get_or_create(slug="IS", name=u"Iceland", continent=europe) - CountryName.objects.get_or_create(slug="IT", name=u"Italy", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="JE", name=u"Jersey", continent=europe) - CountryName.objects.get_or_create(slug="JM", name=u"Jamaica", continent=north_america) - CountryName.objects.get_or_create(slug="JO", name=u"Jordan", continent=asia) - CountryName.objects.get_or_create(slug="JP", name=u"Japan", continent=asia) - CountryName.objects.get_or_create(slug="KE", name=u"Kenya", continent=africa) - CountryName.objects.get_or_create(slug="KG", name=u"Kyrgyzstan", continent=asia) - CountryName.objects.get_or_create(slug="KH", name=u"Cambodia", continent=asia) - CountryName.objects.get_or_create(slug="KI", name=u"Kiribati", continent=oceania) - CountryName.objects.get_or_create(slug="KM", name=u"Comoros", continent=africa) - CountryName.objects.get_or_create(slug="KN", name=u"Saint Kitts and Nevis", continent=north_america) - CountryName.objects.get_or_create(slug="KP", name=u"North Korea", continent=asia) - CountryName.objects.get_or_create(slug="KR", name=u"South Korea", continent=asia) - CountryName.objects.get_or_create(slug="KW", name=u"Kuwait", continent=asia) - CountryName.objects.get_or_create(slug="KY", name=u"Cayman Islands", continent=north_america) - CountryName.objects.get_or_create(slug="KZ", name=u"Kazakhstan", continent=asia) - CountryName.objects.get_or_create(slug="LA", name=u"Laos", continent=asia) - CountryName.objects.get_or_create(slug="LB", name=u"Lebanon", continent=asia) - CountryName.objects.get_or_create(slug="LC", name=u"Saint Lucia", continent=north_america) - CountryName.objects.get_or_create(slug="LI", name=u"Liechtenstein", continent=europe) - CountryName.objects.get_or_create(slug="LK", name=u"Sri Lanka", continent=asia) - CountryName.objects.get_or_create(slug="LR", name=u"Liberia", continent=africa) - CountryName.objects.get_or_create(slug="LS", name=u"Lesotho", continent=africa) - CountryName.objects.get_or_create(slug="LT", name=u"Lithuania", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="LU", name=u"Luxembourg", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="LV", name=u"Latvia", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="LY", name=u"Libya", continent=africa) - CountryName.objects.get_or_create(slug="MA", name=u"Morocco", continent=africa) - CountryName.objects.get_or_create(slug="MC", name=u"Monaco", continent=europe) - CountryName.objects.get_or_create(slug="MD", name=u"Moldova", continent=europe) - CountryName.objects.get_or_create(slug="ME", name=u"Montenegro", continent=europe) - CountryName.objects.get_or_create(slug="MF", name=u"Saint Martin (French part)", continent=north_america) - CountryName.objects.get_or_create(slug="MG", name=u"Madagascar", continent=africa) - CountryName.objects.get_or_create(slug="MH", name=u"Marshall Islands", continent=oceania) - CountryName.objects.get_or_create(slug="MK", name=u"Macedonia", continent=europe) - CountryName.objects.get_or_create(slug="ML", name=u"Mali", continent=africa) - CountryName.objects.get_or_create(slug="MM", name=u"Myanmar", continent=asia) - CountryName.objects.get_or_create(slug="MN", name=u"Mongolia", continent=asia) - CountryName.objects.get_or_create(slug="MO", name=u"Macao", continent=asia) - CountryName.objects.get_or_create(slug="MP", name=u"Northern Mariana Islands", continent=oceania) - CountryName.objects.get_or_create(slug="MQ", name=u"Martinique", continent=north_america) - CountryName.objects.get_or_create(slug="MR", name=u"Mauritania", continent=africa) - CountryName.objects.get_or_create(slug="MS", name=u"Montserrat", continent=north_america) - CountryName.objects.get_or_create(slug="MT", name=u"Malta", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="MU", name=u"Mauritius", continent=africa) - CountryName.objects.get_or_create(slug="MV", name=u"Maldives", continent=asia) - CountryName.objects.get_or_create(slug="MW", name=u"Malawi", continent=africa) - CountryName.objects.get_or_create(slug="MX", name=u"Mexico", continent=north_america) - CountryName.objects.get_or_create(slug="MY", name=u"Malaysia", continent=asia) - CountryName.objects.get_or_create(slug="MZ", name=u"Mozambique", continent=africa) - CountryName.objects.get_or_create(slug="NA", name=u"Namibia", continent=africa) - CountryName.objects.get_or_create(slug="NC", name=u"New Caledonia", continent=oceania) - CountryName.objects.get_or_create(slug="NE", name=u"Niger", continent=africa) - CountryName.objects.get_or_create(slug="NF", name=u"Norfolk Island", continent=oceania) - CountryName.objects.get_or_create(slug="NG", name=u"Nigeria", continent=africa) - CountryName.objects.get_or_create(slug="NI", name=u"Nicaragua", continent=north_america) - CountryName.objects.get_or_create(slug="NL", name=u"Netherlands", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="NO", name=u"Norway", continent=europe) - CountryName.objects.get_or_create(slug="NP", name=u"Nepal", continent=asia) - CountryName.objects.get_or_create(slug="NR", name=u"Nauru", continent=oceania) - CountryName.objects.get_or_create(slug="NU", name=u"Niue", continent=oceania) - CountryName.objects.get_or_create(slug="NZ", name=u"New Zealand", continent=oceania) - CountryName.objects.get_or_create(slug="OM", name=u"Oman", continent=asia) - CountryName.objects.get_or_create(slug="PA", name=u"Panama", continent=north_america) - CountryName.objects.get_or_create(slug="PE", name=u"Peru", continent=south_america) - CountryName.objects.get_or_create(slug="PF", name=u"French Polynesia", continent=oceania) - CountryName.objects.get_or_create(slug="PG", name=u"Papua New Guinea", continent=oceania) - CountryName.objects.get_or_create(slug="PH", name=u"Philippines", continent=asia) - CountryName.objects.get_or_create(slug="PK", name=u"Pakistan", continent=asia) - CountryName.objects.get_or_create(slug="PL", name=u"Poland", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="PM", name=u"Saint Pierre and Miquelon", continent=north_america) - CountryName.objects.get_or_create(slug="PN", name=u"Pitcairn", continent=oceania) - CountryName.objects.get_or_create(slug="PR", name=u"Puerto Rico", continent=north_america) - CountryName.objects.get_or_create(slug="PS", name=u"Palestine, State of", continent=asia) - CountryName.objects.get_or_create(slug="PT", name=u"Portugal", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="PW", name=u"Palau", continent=oceania) - CountryName.objects.get_or_create(slug="PY", name=u"Paraguay", continent=south_america) - CountryName.objects.get_or_create(slug="QA", name=u"Qatar", continent=asia) - CountryName.objects.get_or_create(slug="RE", name=u"Réunion", continent=africa) - CountryName.objects.get_or_create(slug="RO", name=u"Romania", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="RS", name=u"Serbia", continent=europe) - CountryName.objects.get_or_create(slug="RU", name=u"Russia", continent=europe) - CountryName.objects.get_or_create(slug="RW", name=u"Rwanda", continent=africa) - CountryName.objects.get_or_create(slug="SA", name=u"Saudi Arabia", continent=asia) - CountryName.objects.get_or_create(slug="SB", name=u"Solomon Islands", continent=oceania) - CountryName.objects.get_or_create(slug="SC", name=u"Seychelles", continent=africa) - CountryName.objects.get_or_create(slug="SD", name=u"Sudan", continent=africa) - CountryName.objects.get_or_create(slug="SE", name=u"Sweden", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="SG", name=u"Singapore", continent=asia) - CountryName.objects.get_or_create(slug="SH", name=u"Saint Helena, Ascension and Tristan da Cunha", continent=africa) - CountryName.objects.get_or_create(slug="SI", name=u"Slovenia", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="SJ", name=u"Svalbard and Jan Mayen", continent=europe) - CountryName.objects.get_or_create(slug="SK", name=u"Slovakia", continent=europe, in_eu=True) - CountryName.objects.get_or_create(slug="SL", name=u"Sierra Leone", continent=africa) - CountryName.objects.get_or_create(slug="SM", name=u"San Marino", continent=europe) - CountryName.objects.get_or_create(slug="SN", name=u"Senegal", continent=africa) - CountryName.objects.get_or_create(slug="SO", name=u"Somalia", continent=africa) - CountryName.objects.get_or_create(slug="SR", name=u"Suriname", continent=south_america) - CountryName.objects.get_or_create(slug="SS", name=u"South Sudan", continent=africa) - CountryName.objects.get_or_create(slug="ST", name=u"Sao Tome and Principe", continent=africa) - CountryName.objects.get_or_create(slug="SV", name=u"El Salvador", continent=north_america) - CountryName.objects.get_or_create(slug="SX", name=u"Sint Maarten (Dutch part)", continent=north_america) - CountryName.objects.get_or_create(slug="SY", name=u"Syria", continent=asia) - CountryName.objects.get_or_create(slug="SZ", name=u"Swaziland", continent=africa) - CountryName.objects.get_or_create(slug="TC", name=u"Turks and Caicos Islands", continent=north_america) - CountryName.objects.get_or_create(slug="TD", name=u"Chad", continent=africa) - CountryName.objects.get_or_create(slug="TF", name=u"French Southern Territories", continent=antarctica) - CountryName.objects.get_or_create(slug="TG", name=u"Togo", continent=africa) - CountryName.objects.get_or_create(slug="TH", name=u"Thailand", continent=asia) - CountryName.objects.get_or_create(slug="TJ", name=u"Tajikistan", continent=asia) - CountryName.objects.get_or_create(slug="TK", name=u"Tokelau", continent=oceania) - CountryName.objects.get_or_create(slug="TL", name=u"Timor-Leste", continent=asia) - CountryName.objects.get_or_create(slug="TM", name=u"Turkmenistan", continent=asia) - CountryName.objects.get_or_create(slug="TN", name=u"Tunisia", continent=africa) - CountryName.objects.get_or_create(slug="TO", name=u"Tonga", continent=oceania) - CountryName.objects.get_or_create(slug="TR", name=u"Turkey", continent=europe) - CountryName.objects.get_or_create(slug="TT", name=u"Trinidad and Tobago", continent=north_america) - CountryName.objects.get_or_create(slug="TV", name=u"Tuvalu", continent=oceania) - CountryName.objects.get_or_create(slug="TW", name=u"Taiwan", continent=asia) - CountryName.objects.get_or_create(slug="TZ", name=u"Tanzania", continent=africa) - CountryName.objects.get_or_create(slug="UA", name=u"Ukraine", continent=europe) - CountryName.objects.get_or_create(slug="UG", name=u"Uganda", continent=africa) - CountryName.objects.get_or_create(slug="UM", name=u"United States Minor Outlying Islands", continent=oceania) - CountryName.objects.get_or_create(slug="US", name=u"United States of America", continent=north_america) - CountryName.objects.get_or_create(slug="UY", name=u"Uruguay", continent=south_america) - CountryName.objects.get_or_create(slug="UZ", name=u"Uzbekistan", continent=asia) - CountryName.objects.get_or_create(slug="VA", name=u"Holy See", continent=europe) - CountryName.objects.get_or_create(slug="VC", name=u"Saint Vincent and the Grenadines", continent=north_america) - CountryName.objects.get_or_create(slug="VE", name=u"Venezuela", continent=south_america) - CountryName.objects.get_or_create(slug="VG", name=u"Virgin Islands (British)", continent=north_america) - CountryName.objects.get_or_create(slug="VI", name=u"Virgin Islands (U.S.)", continent=north_america) - CountryName.objects.get_or_create(slug="VN", name=u"Vietnam", continent=asia) - CountryName.objects.get_or_create(slug="VU", name=u"Vanuatu", continent=oceania) - CountryName.objects.get_or_create(slug="WF", name=u"Wallis and Futuna", continent=oceania) - CountryName.objects.get_or_create(slug="WS", name=u"Samoa", continent=oceania) - CountryName.objects.get_or_create(slug="YE", name=u"Yemen", continent=asia) - CountryName.objects.get_or_create(slug="YT", name=u"Mayotte", continent=africa) - CountryName.objects.get_or_create(slug="ZA", name=u"South Africa", continent=africa) - CountryName.objects.get_or_create(slug="ZM", name=u"Zambia", continent=africa) - CountryName.objects.get_or_create(slug="ZW", name=u"Zimbabwe", continent=africa) - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0022_continentname_countryname'), - ] - - operations = [ - migrations.RunPython(insert_initial_country_continent_names, migrations.RunPython.noop) - ] diff --git a/ietf/name/migrations/0024_merge_20170606_1320.py b/ietf/name/migrations/0024_merge_20170606_1320.py deleted file mode 100644 index dd2f4cb8b..000000000 --- a/ietf/name/migrations/0024_merge_20170606_1320.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-06-06 13:20 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0023_add_country_continent_names'), - ('name', '0020_add_topics'), - ] - - operations = [ - ] diff --git a/ietf/name/migrations/0025_add-important-dates.py b/ietf/name/migrations/0025_add-important-dates.py deleted file mode 100644 index 543e6d87d..000000000 --- a/ietf/name/migrations/0025_add-important-dates.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-19 07:07 -from __future__ import unicode_literals - -from django.db import migrations, models - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0024_merge_20170606_1320'), - ] - - operations = [ - migrations.CreateModel( - name='ImportantDateName', - fields=[ - ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ('default_offset_days', models.SmallIntegerField()), - ], - options={ - 'ordering': ['order', 'name'], - 'abstract': False, - }, - ), - ] diff --git a/ietf/name/migrations/0026_popuulate-important-date-names.py b/ietf/name/migrations/0026_popuulate-important-date-names.py deleted file mode 100644 index bdf09c8fe..000000000 --- a/ietf/name/migrations/0026_popuulate-important-date-names.py +++ /dev/null @@ -1,192 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-19 07:07 -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps,schema_editor): - ImportantDateName = apps.get_model('name','ImportantDateName') - - # offsets below assume meetings start on Saturday - - ImportantDateName.objects.create( - slug='openreg', - name='Registration Opens', - desc='IETF Online Registration Opens', - used=True, - order=0, - default_offset_days= - (13*7 - 2), # Monday - ) - - ImportantDateName.objects.create( - slug='opensched', - name='Scheduling Opens', - desc='Working Group and BOF scheduling begins', - used=True, - order=0, - default_offset_days= - (13*7 - 2), # Monday - ) - - ImportantDateName.objects.create( - slug='cutoffwgreq', - name='Cut-off WG scheduling Requests', - desc='Cut-off date for requests to schedule Working Group Meetings at UTC 23:59', - used=True, - order=0, - default_offset_days= - (6*7 + 1), # Friday - ) - - ImportantDateName.objects.create( - slug='cutoffbofreq', - name='Cut-off BOF scheduling Requests', - desc='Cut-off date for BOF proposal requests to Area Directors at UTC 23:59', - used=True, - order=0, - default_offset_days= - (6*7 + 1), # Friday - ) - - ImportantDateName.objects.create( - slug='cutoffbofapprove', - name='Cut-off BOF approval', - desc='Cut-off date for Area Directors to approve BOFs at UTC 23:59', - used=True, - order=0, - default_offset_days= - (5*7 + 1), # Friday - ) - - ImportantDateName.objects.create( - slug='prelimagenda', - name='Preliminary Agenda', - desc='Preliminary Agenda published for comment', - used=True, - order=0, - default_offset_days= - (4*7 + 1), # Friday - ) - - ImportantDateName.objects.create( - slug='cutoffresched', - name='Cut-off Reschedule Requests', - desc='Cut-off date for requests to reschedule Working Group or BOF meetings UTC 23:59', - used=True, - order=0, - default_offset_days= - (4*7 - 4), # Wednesday - ) - - ImportantDateName.objects.create( - slug='finalagenda', - name='Final Agenda', - desc='Final agenda to be published', - used=True, - order=0, - default_offset_days= - (3*7 + 1), # Friday - ) - - # NOTE idcutoff is targetted for the current situation where we - # only have one draft cutoff date.. If we ever go back to a separate - # -01 vs -00 cutoff, this one will need to be marked unused and the - # two at then end should be marked used. - - ImportantDateName.objects.create( - slug='idcutoff', - name='ID Cutoff', - desc='Internet Draft submission cut-off (for all drafts, including -00) by UTC 23:59', # TODO - get these times out of there? What if the policy changes? Old meetings should show the time used for that meeting. - used=True, - order=0, - default_offset_days= - (2*7 - 2), # Monday - ) - - ImportantDateName.objects.create( - slug='draftwgagenda', - name='Draft Working Group Agendas', - desc='Draft Working Group agendas due by UTC 23:59', - used=True, - order=0, - default_offset_days= - (2*7 - 4), # Wednesday - ) - - ImportantDateName.objects.create( - slug='earlybird', - name='Earlybird cutoff', - desc='Early Bird registration and payment cut-off at UTC 23:59', - used=True, - order=0, - default_offset_days= - (1*7 + 1), # Friday - ) - - ImportantDateName.objects.create( - slug='revwgagenda', - name='Revised Working Group Agendas', - desc='Revised Working Group agendas due by UTC 23:59', - used=True, - order=0, - default_offset_days= - (1*7 - 2), # Monday - ) - - ImportantDateName.objects.create( - slug='cutoffcancel', - name='Registration Cancellation Cut-off', - desc='Registration cancellation cut-off at UTC 23:59', - used=True, - order=0, - default_offset_days= - (1*7 - 2), # Monday - ) - - ImportantDateName.objects.create( - slug='cutoffpre', - name='Pre-Registration Cutoff', - desc='Final Pre-Registration and Pre-Payment cut-off at 17:00 local meeting time', - used=True, - order=0, - default_offset_days= - (0*7 + 1), # Friday - ) - - ImportantDateName.objects.create( - slug='procsub', - name='Proceedings Submission Cut-off', - desc='Proceedings submission cutoff date by UTC 23:59', - used=True, - order=0, - default_offset_days= (6 + 3*7), # Friday - ) - - ImportantDateName.objects.create( - slug='revsub', - name='Proceedings Submission Revision Cut-off', - desc='Proceedings submission corrections cutoff date by UTC 23:59', - used=True, - order=0, - default_offset_days= (2 + 7*7), # Monday - ) - - ImportantDateName.objects.create( - slug='00cutoff', - name='00 ID Cutoff', - desc='Internet Draft submission cut-off for -00 drafts by UTC 23:59', - used=False, - order=0, - default_offset_days= - (3*7 - 2), # Monday - ) - - ImportantDateName.objects.create( - slug='01cutoff', - name='01 ID Cutoff', - desc='Internet Draft submission cut-off for revised (-01 and above) drafts by UTC 23:59', - used=False, - order=0, - default_offset_days= - (2*7 - 2), # Monday - ) - - -def reverse(apps,schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0025_add-important-dates'), - ('meeting','0053_important_date') - ] - - operations = [ - migrations.RunPython(forward, reverse), - ] diff --git a/ietf/name/migrations/0027_docurltagname.py b/ietf/name/migrations/0027_docurltagname.py deleted file mode 100644 index d29e9684a..000000000 --- a/ietf/name/migrations/0027_docurltagname.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-09-26 05:36 -from __future__ import unicode_literals - -from django.db import migrations, models - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0026_popuulate-important-date-names'), - ] - - operations = [ - migrations.CreateModel( - name='DocUrlTagName', - fields=[ - ('slug', models.CharField(max_length=32, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=255)), - ('desc', models.TextField(blank=True)), - ('used', models.BooleanField(default=True)), - ('order', models.IntegerField(default=0)), - ], - options={ - 'ordering': ['order', 'name'], - 'abstract': False, - }, - ), - ] - - diff --git a/ietf/name/migrations/0028_add_docurltagname_entries.py b/ietf/name/migrations/0028_add_docurltagname_entries.py deleted file mode 100644 index ddf5c783e..000000000 --- a/ietf/name/migrations/0028_add_docurltagname_entries.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-09-27 10:29 -from __future__ import unicode_literals - -from django.db import migrations - -def forwards(apps,schema_editor): - DocUrlTagName = apps.get_model('name','DocUrlTagName') - - DocUrlTagName.objects.create( - slug='wiki', - name='Document wiki', - ) - DocUrlTagName.objects.create( - slug='issues', - name='Document Issue Tracker', - ) - DocUrlTagName.objects.create( - slug='repository', - name='Document Source Repository', - ) - DocUrlTagName.objects.create( - slug='yang-module', - name='Extracted Yang Module', - ) - DocUrlTagName.objects.create( - slug='yang-impact-analysis', - name='Yang Impact Analysis', - ) - DocUrlTagName.objects.create( - slug='yang-module-metadata', - name='Yang module metadata', - ) - -def backwards(apps,schema_editor): - pass - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0027_docurltagname'), - ('doc', '0034_documenturl'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/name/migrations/0029_add_submit_state_confirmed.py b/ietf/name/migrations/0029_add_submit_state_confirmed.py deleted file mode 100644 index 3e60a5d60..000000000 --- a/ietf/name/migrations/0029_add_submit_state_confirmed.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-10-06 03:42 -from __future__ import unicode_literals - -from django.db import migrations - -def forwards(apps,schema_editor): - DraftSubmissionStateName = apps.get_model('name','DraftSubmissionStateName') - - auth = DraftSubmissionStateName.objects.get(slug='auth') - aut_appr = DraftSubmissionStateName.objects.get(slug='aut-appr') - cancelled = DraftSubmissionStateName.objects.get(slug='cancel') - posted = DraftSubmissionStateName.objects.get(slug='posted') - - confirmed = DraftSubmissionStateName.objects.create( - slug = 'confirmed', - name = 'Confirmed', - ) - - confirmed.next_states.add(cancelled, posted) - auth.next_states.add(confirmed) - aut_appr.next_states.add(confirmed) - -def backwards(apps,schema_editor): - DraftSubmissionStateName = apps.get_model('name','DraftSubmissionStateName') - - auth = DraftSubmissionStateName.objects.get(slug='auth') - aut_appr = DraftSubmissionStateName.objects.get(slug='aut-appr') - confirmed = DraftSubmissionStateName.objects.get(slug='confirmed') - - auth.next_states.remove(confirmed) - aut_appr.next_states.remove(confirmed) - - confirmed.delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0028_add_docurltagname_entries'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/nomcom/migrations/0001_initial.py b/ietf/nomcom/migrations/0001_initial.py index da6ba823d..ca498d684 100644 --- a/ietf/nomcom/migrations/0001_initial.py +++ b/ietf/nomcom/migrations/0001_initial.py @@ -1,15 +1,20 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations -import ietf.nomcom.models -import ietf.nomcom.fields -import django.core.files.storage from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import ietf.nomcom.fields +import ietf.nomcom.models +import ietf.utils.models +import ietf.utils.storage class Migration(migrations.Migration): + initial = True + dependencies = [ ('group', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), @@ -22,176 +27,209 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Feedback', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('author', models.EmailField(max_length=75, verbose_name=b'Author', blank=True)), - ('subject', models.TextField(verbose_name=b'Subject', blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('author', models.EmailField(blank=True, max_length=254, verbose_name=b'Author')), + ('subject', models.TextField(blank=True, verbose_name=b'Subject')), ('comments', ietf.nomcom.fields.EncryptedTextField(verbose_name=b'Comments')), ('time', models.DateTimeField(auto_now_add=True)), ], options={ 'ordering': ['time'], }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='FeedbackLastSeen', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(auto_now=True)), + ], ), migrations.CreateModel( name='NomCom', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('public_key', models.FileField(storage=django.core.files.storage.FileSystemStorage(location=b'/var/www/nomcom/public_keys/'), null=True, upload_to=ietf.nomcom.models.upload_path_handler, blank=True)), - ('send_questionnaire', models.BooleanField(default=False, help_text=b'If you check this box, questionnaires are sent automatically after nominations', verbose_name=b'Send questionnaires automatically"')), - ('reminder_interval', models.PositiveIntegerField(help_text=b'If the nomcom user sets the interval field then a cron command will send reminders to the nominees who have not responded using the following formula: (today - nomination_date) % interval == 0', null=True, blank=True)), - ('initial_text', models.TextField(verbose_name=b'Help text for nomination form', blank=True)), - ('group', models.ForeignKey(to='group.Group')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('public_key', models.FileField(blank=True, null=True, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=ietf.nomcom.models.upload_path_handler)), + ('send_questionnaire', models.BooleanField(default=False, help_text=b'If you check this box, questionnaires are sent automatically after nominations.', verbose_name=b'Send questionnaires automatically')), + ('reminder_interval', models.PositiveIntegerField(blank=True, help_text=b'If the nomcom user sets the interval field then a cron command will send reminders to the nominees who have not responded using the following formula: (today - nomination_date) % interval == 0.', null=True)), + ('initial_text', models.TextField(blank=True, verbose_name=b'Help text for nomination form')), + ('show_nominee_pictures', models.BooleanField(default=True, help_text=b'Display pictures of each nominee (if available) on the feedback pages', verbose_name=b'Show nominee pictures')), + ('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ], options={ 'verbose_name': 'NomCom', 'verbose_name_plural': 'NomComs', }, - bases=(models.Model,), ), migrations.CreateModel( name='Nomination', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('candidate_name', models.CharField(max_length=255, verbose_name=b'Candidate name')), ('candidate_email', models.EmailField(max_length=255, verbose_name=b'Candidate email')), - ('candidate_phone', models.CharField(max_length=255, verbose_name=b'Candidate phone', blank=True)), - ('nominator_email', models.EmailField(max_length=75, verbose_name=b'Nominator Email', blank=True)), + ('candidate_phone', models.CharField(blank=True, max_length=255, verbose_name=b'Candidate phone')), + ('nominator_email', models.EmailField(blank=True, max_length=254, verbose_name=b'Nominator Email')), ('time', models.DateTimeField(auto_now_add=True)), - ('comments', models.ForeignKey(to='nomcom.Feedback')), + ('share_nominator', models.BooleanField(default=False, help_text=b'Check this box to allow the NomCom to let the person you are nominating know that you were one of the people who nominated them. If you do not check this box, your name will be confidential and known only within NomCom.', verbose_name=b'Share nominator name with candidate')), + ('comments', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.Feedback')), ], options={ 'verbose_name_plural': 'Nominations', }, - bases=(models.Model,), ), migrations.CreateModel( name='Nominee', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('duplicated', models.ForeignKey(blank=True, to='nomcom.Nominee', null=True)), - ('email', models.ForeignKey(to='person.Email')), - ('nomcom', models.ForeignKey(to='nomcom.NomCom')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('duplicated', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='nomcom.Nominee')), + ('email', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Email')), + ('nomcom', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.NomCom')), ], options={ + 'ordering': ['-nomcom__group__acronym', 'email__address'], 'verbose_name_plural': 'Nominees', }, - bases=(models.Model,), ), migrations.CreateModel( name='NomineePosition', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(auto_now_add=True)), - ('nominee', models.ForeignKey(to='nomcom.Nominee')), + ('nominee', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.Nominee')), ], options={ 'ordering': ['nominee'], 'verbose_name': 'Nominee position', 'verbose_name_plural': 'Nominee positions', }, - bases=(models.Model,), ), migrations.CreateModel( name='Position', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=255, verbose_name=b'Name')), - ('description', models.TextField(verbose_name=b'Description')), - ('is_open', models.BooleanField(default=False, verbose_name=b'Is open')), - ('incumbent', models.ForeignKey(blank=True, to='person.Email', null=True)), - ('nomcom', models.ForeignKey(to='nomcom.NomCom')), - ('questionnaire', models.ForeignKey(related_name='questionnaire', editable=False, to='dbtemplate.DBTemplate', null=True)), - ('requirement', models.ForeignKey(related_name='requirement', editable=False, to='dbtemplate.DBTemplate', null=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(help_text=b'This short description will appear on the Nomination and Feedback pages. Be as descriptive as necessary. Past examples: "Transport AD", "IAB Member"', max_length=255, verbose_name=b'Name')), + ('is_open', models.BooleanField(default=False, help_text=b'Set is_open when the nomcom is working on a position. Clear it when an appointment is confirmed.', verbose_name=b'Is open')), + ('accepting_nominations', models.BooleanField(default=False, verbose_name=b'Is accepting nominations')), + ('accepting_feedback', models.BooleanField(default=False, verbose_name=b'Is accepting feedback')), + ('nomcom', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.NomCom')), + ('questionnaire', ietf.utils.models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='questionnaire', to='dbtemplate.DBTemplate')), + ('requirement', ietf.utils.models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='requirement', to='dbtemplate.DBTemplate')), ], options={ 'verbose_name_plural': 'Positions', }, - bases=(models.Model,), ), migrations.CreateModel( name='ReminderDates', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateField()), - ('nomcom', models.ForeignKey(to='nomcom.NomCom')), + ('nomcom', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.NomCom')), + ], + ), + migrations.CreateModel( + name='Topic', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('subject', models.CharField(help_text=b'This short description will appear on the Feedback pages.', max_length=255, verbose_name=b'Name')), + ('accepting_feedback', models.BooleanField(default=False, verbose_name=b'Is accepting feedback')), + ('audience', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.TopicAudienceName')), + ('description', ietf.utils.models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='description', to='dbtemplate.DBTemplate')), + ('nomcom', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.NomCom')), ], options={ + 'verbose_name_plural': 'Topics', }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='TopicFeedbackLastSeen', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(auto_now=True)), + ('reviewer', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('topic', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.Topic')), + ], ), migrations.AddField( model_name='nomineeposition', name='position', - field=models.ForeignKey(to='nomcom.Position'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.Position'), ), migrations.AddField( model_name='nomineeposition', name='state', - field=models.ForeignKey(to='name.NomineePositionStateName'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.NomineePositionStateName'), + ), + migrations.AddField( + model_name='nominee', + name='nominee_position', + field=models.ManyToManyField(through='nomcom.NomineePosition', to='nomcom.Position'), + ), + migrations.AddField( + model_name='nominee', + name='person', + field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Person'), + ), + migrations.AddField( + model_name='nomination', + name='nominee', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.Nominee'), + ), + migrations.AddField( + model_name='nomination', + name='position', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.Position'), + ), + migrations.AddField( + model_name='nomination', + name='user', + field=ietf.utils.models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='feedbacklastseen', + name='nominee', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.Nominee'), + ), + migrations.AddField( + model_name='feedbacklastseen', + name='reviewer', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person'), + ), + migrations.AddField( + model_name='feedback', + name='nomcom', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.NomCom'), + ), + migrations.AddField( + model_name='feedback', + name='nominees', + field=models.ManyToManyField(blank=True, to='nomcom.Nominee'), + ), + migrations.AddField( + model_name='feedback', + name='positions', + field=models.ManyToManyField(blank=True, to='nomcom.Position'), + ), + migrations.AddField( + model_name='feedback', + name='topics', + field=models.ManyToManyField(blank=True, to='nomcom.Topic'), + ), + migrations.AddField( + model_name='feedback', + name='type', + field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='name.FeedbackTypeName'), + ), + migrations.AddField( + model_name='feedback', + name='user', + field=ietf.utils.models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), migrations.AlterUniqueTogether( name='nomineeposition', unique_together=set([('position', 'nominee')]), ), - migrations.AddField( - model_name='nominee', - name='nominee_position', - field=models.ManyToManyField(to='nomcom.Position', through='nomcom.NomineePosition'), - preserve_default=True, - ), migrations.AlterUniqueTogether( name='nominee', unique_together=set([('email', 'nomcom')]), ), - migrations.AddField( - model_name='nomination', - name='nominee', - field=models.ForeignKey(to='nomcom.Nominee'), - preserve_default=True, - ), - migrations.AddField( - model_name='nomination', - name='position', - field=models.ForeignKey(to='nomcom.Position'), - preserve_default=True, - ), - migrations.AddField( - model_name='nomination', - name='user', - field=models.ForeignKey(editable=False, to=settings.AUTH_USER_MODEL), - preserve_default=True, - ), - migrations.AddField( - model_name='feedback', - name='nomcom', - field=models.ForeignKey(to='nomcom.NomCom'), - preserve_default=True, - ), - migrations.AddField( - model_name='feedback', - name='nominees', - field=models.ManyToManyField(to='nomcom.Nominee', null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='feedback', - name='positions', - field=models.ManyToManyField(to='nomcom.Position', null=True, blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='feedback', - name='type', - field=models.ForeignKey(blank=True, to='name.FeedbackTypeName', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='feedback', - name='user', - field=models.ForeignKey(blank=True, editable=False, to=settings.AUTH_USER_MODEL, null=True), - preserve_default=True, - ), ] diff --git a/ietf/nomcom/migrations/0002_auto_20150430_0909.py b/ietf/nomcom/migrations/0002_auto_20150430_0909.py deleted file mode 100644 index 7a15833ac..000000000 --- a/ietf/nomcom/migrations/0002_auto_20150430_0909.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='nomcom', - name='reminder_interval', - field=models.PositiveIntegerField(help_text=b'If the nomcom user sets the interval field then a cron command will send reminders to the nominees who have not responded using the following formula: (today - nomination_date) % interval == 0.', null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='nomcom', - name='send_questionnaire', - field=models.BooleanField(default=False, help_text=b'If you check this box, questionnaires are sent automatically after nominations.', verbose_name=b'Send questionnaires automatically'), - preserve_default=True, - ), - ] diff --git a/ietf/nomcom/migrations/0003_nomination_share_nominator.py b/ietf/nomcom/migrations/0003_nomination_share_nominator.py deleted file mode 100644 index e37db7a96..000000000 --- a/ietf/nomcom/migrations/0003_nomination_share_nominator.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0002_auto_20150430_0909'), - ] - - operations = [ - migrations.AddField( - model_name='nomination', - name='share_nominator', - field=models.BooleanField(default=False, help_text=b'Check this box to allow the NomCom to let the person you are nominating know that you were one of the people who nominated them. If you do not check this box, your name will be confidential and known only within NomCom.', verbose_name=b'Share nominator name with candidate'), - preserve_default=True, - ), - ] diff --git a/ietf/nomcom/migrations/0004_auto_20151027_0829.py b/ietf/nomcom/migrations/0004_auto_20151027_0829.py deleted file mode 100644 index 35197b4f4..000000000 --- a/ietf/nomcom/migrations/0004_auto_20151027_0829.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import ietf.nomcom.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0003_nomination_share_nominator'), - ] - - operations = [ - migrations.AlterField( - model_name='nomcom', - name='public_key', - field=models.FileField(storage=ietf.nomcom.models.NoLocationMigrationFileSystemStorage(location=None), null=True, upload_to=ietf.nomcom.models.upload_path_handler, blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/nomcom/migrations/0005_remove_position_incumbent.py b/ietf/nomcom/migrations/0005_remove_position_incumbent.py deleted file mode 100644 index 1b59c0855..000000000 --- a/ietf/nomcom/migrations/0005_remove_position_incumbent.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0004_auto_20151027_0829'), - ] - - operations = [ - migrations.RemoveField( - model_name='position', - name='incumbent', - ), - ] diff --git a/ietf/nomcom/migrations/0006_improve_default_questionnaire_templates.py b/ietf/nomcom/migrations/0006_improve_default_questionnaire_templates.py deleted file mode 100644 index 60b1622dd..000000000 --- a/ietf/nomcom/migrations/0006_improve_default_questionnaire_templates.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def set_new_template_content(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - - h = DBTemplate.objects.get(path='/nomcom/defaults/position/header_questionnaire.txt') - h.content = """Hi $nominee, this is the questionnaire for the position $position. -Please follow the directions in the questionnaire closely - you may see -that some changes have been made from previous years, so please take note. - -We look forward to reading your questionnaire response! If you have any -administrative questions, please send mail to nomcom-chair@ietf.org. - -You may have received this questionnaire before accepting the nomination. A -separate message, sent at the time of nomination, provides instructions for -indicating whether you accept or decline. If you have not completed those -steps, please do so as soon as possible, or contact the nomcom chair. - -Thank you! - - -""" - h.save() - - h = DBTemplate.objects.get(path='/nomcom/defaults/position/questionnaire.txt') - h.content = """NomCom Chair: Replace this content with the appropriate questionnaire for the position $position. -""" - h.save() - -def revert_to_old_template_content(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - - h = DBTemplate.objects.get(path='/nomcom/defaults/position/header_questionnaire.txt') - h.content = """Hi $nominee, this is the questionnaire for the position $position. -Please follow the directions in the questionnaire closely - you may see -that some changes have been made from previous years, so please take note. - -We look forward to reading your questionnaire response! If you have any -administrative questions, please send mail to nomcom-chair@ietf.org. - -Thank you! - - -""" - h.save() - - h = DBTemplate.objects.get(path='/nomcom/defaults/position/questionnaire.txt') - h.content = """Enter here the questionnaire for the position $position: - -Questionnaire - -""" - h.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0005_remove_position_incumbent'), - ] - - operations = [ - migrations.RunPython(set_new_template_content,revert_to_old_template_content) - ] diff --git a/ietf/nomcom/migrations/0007_feedbacklastseen.py b/ietf/nomcom/migrations/0007_feedbacklastseen.py deleted file mode 100644 index b387b0045..000000000 --- a/ietf/nomcom/migrations/0007_feedbacklastseen.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import datetime - -from django.db import models, migrations - -def create_lastseen(apps, schema_editor): - NomCom = apps.get_model('nomcom','NomCom') - FeedbackLastSeen = apps.get_model('nomcom','FeedbackLastSeen') - now = datetime.datetime.now() - for nc in NomCom.objects.all(): - reviewers = [r.person for r in nc.group.role_set.all()] - nominees = nc.nominee_set.all() - for r in reviewers: - for n in nominees: - FeedbackLastSeen.objects.create(reviewer=r,nominee=n,time=now) - -def remove_lastseen(apps, schema_editor): - FeedbackLastSeen = apps.get_model('nomcom','FeedbackLastSeen') - FeedbackLastSeen.objects.delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0004_auto_20150308_0440'), - ('group', '0006_auto_20150718_0509'), - ('nomcom', '0006_improve_default_questionnaire_templates'), - ] - - operations = [ - - migrations.CreateModel( - name='FeedbackLastSeen', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('time', models.DateTimeField(auto_now=True)), - ('nominee', models.ForeignKey(to='nomcom.Nominee')), - ('reviewer', models.ForeignKey(to='person.Person')), - ], - options={ - }, - bases=(models.Model,), - ), - - migrations.RunPython(create_lastseen,remove_lastseen) - - ] diff --git a/ietf/nomcom/migrations/0008_auto_20151209_1423.py b/ietf/nomcom/migrations/0008_auto_20151209_1423.py deleted file mode 100644 index 8d8861a6b..000000000 --- a/ietf/nomcom/migrations/0008_auto_20151209_1423.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0007_feedbacklastseen'), - ] - - operations = [ - migrations.RemoveField( - model_name='position', - name='description', - ), - migrations.AlterField( - model_name='position', - name='name', - field=models.CharField(help_text=b'This short description will appear on the Nomination and Feedback pages. Be as descriptive as necessary. Past examples: "Transport AD", "IAB Member"', max_length=255, verbose_name=b'Name'), - preserve_default=True, - ), - ] diff --git a/ietf/nomcom/migrations/0009_remove_requirements_dbtemplate_type_from_path.py b/ietf/nomcom/migrations/0009_remove_requirements_dbtemplate_type_from_path.py deleted file mode 100644 index 00830a534..000000000 --- a/ietf/nomcom/migrations/0009_remove_requirements_dbtemplate_type_from_path.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def remove_extension(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - for template in DBTemplate.objects.filter(path__endswith="requirements.txt"): - template.path = template.path[:-4] - template.save() - -def restore_extension(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - for template in DBTemplate.objects.filter(path__endswith="requirements"): - template.path = template.path+".txt" - template.save() - -def default_rst(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - default_req = DBTemplate.objects.get(path__startswith='/nomcom/defaults/position/requirements') - default_req.type_id = 'rst' - default_req.save() - -def default_plain(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - default_req = DBTemplate.objects.get(path__startswith='/nomcom/defaults/position/requirements') - default_req.type_id = 'plain' - default_req.save() - -def rst_2015(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - DBTemplate.objects.filter(path__startswith='/nomcom/nomcom2015/').filter(path__contains='position/requirements').exclude(path__contains='/27/').update(type_id='rst') - -def plain_2015(apps, schema_editor): - DBTemplate = apps.get_model('dbtemplate','DBTemplate') - DBTemplate.objects.filter(path__startswith='/nomcom/nomcom2015/').filter(path__contains='position/requirements').update(type_id='plain') - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0008_auto_20151209_1423'), - ('dbtemplate', '0002_auto_20141222_1749'), - ] - - operations = [ - migrations.RunPython(remove_extension,restore_extension), - migrations.RunPython(default_rst,default_plain), - migrations.RunPython(rst_2015,plain_2015), - ] diff --git a/ietf/nomcom/migrations/0010_nominee_person.py b/ietf/nomcom/migrations/0010_nominee_person.py deleted file mode 100644 index 3ff549479..000000000 --- a/ietf/nomcom/migrations/0010_nominee_person.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - -def populate_person(apps, schema_editor): - Nominee = apps.get_model('nomcom','Nominee') - for n in Nominee.objects.all(): - n.person = n.email.person - n.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0004_auto_20150308_0440'), - ('nomcom', '0009_remove_requirements_dbtemplate_type_from_path'), - ] - - operations = [ - migrations.AddField( - model_name='nominee', - name='person', - field=models.ForeignKey(blank=True, to='person.Person', null=True), - preserve_default=True, - ), - migrations.RunPython(populate_person,None) - ] diff --git a/ietf/nomcom/migrations/0011_auto_20161207_1046.py b/ietf/nomcom/migrations/0011_auto_20161207_1046.py deleted file mode 100644 index dc0ca7cbf..000000000 --- a/ietf/nomcom/migrations/0011_auto_20161207_1046.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0010_nominee_person'), - ] - - operations = [ - migrations.AlterField( - model_name='feedback', - name='author', - field=models.EmailField(max_length=254, verbose_name=b'Author', blank=True), - ), - migrations.AlterField( - model_name='feedback', - name='nominees', - field=models.ManyToManyField(to='nomcom.Nominee', blank=True), - ), - migrations.AlterField( - model_name='feedback', - name='positions', - field=models.ManyToManyField(to='nomcom.Position', blank=True), - ), - migrations.AlterField( - model_name='nomination', - name='nominator_email', - field=models.EmailField(max_length=254, verbose_name=b'Nominator Email', blank=True), - ), - ] diff --git a/ietf/nomcom/migrations/0012_auto_20170210_0205.py b/ietf/nomcom/migrations/0012_auto_20170210_0205.py deleted file mode 100644 index ad70ff26a..000000000 --- a/ietf/nomcom/migrations/0012_auto_20170210_0205.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-10 02:05 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0011_auto_20161207_1046'), - ] - - operations = [ - migrations.AlterModelOptions( - name='nominee', - options={'ordering': ['-nomcom__group__acronym', 'email__address'], 'verbose_name_plural': 'Nominees'}, - ), - ] diff --git a/ietf/nomcom/migrations/0013_position_nomination_feedback_switches.py b/ietf/nomcom/migrations/0013_position_nomination_feedback_switches.py deleted file mode 100644 index dac5f79c3..000000000 --- a/ietf/nomcom/migrations/0013_position_nomination_feedback_switches.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-19 07:58 -from __future__ import unicode_literals - -from django.db import migrations, models -from django.db.models import F - -def forward(apps, schema_editor): - Position = apps.get_model('nomcom','Position') - Position.objects.update(accepting_nominations=F('is_open')) - Position.objects.update(accepting_feedback=F('is_open')) - -def reverse(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0012_auto_20170210_0205'), - ] - - operations = [ - migrations.AddField( - model_name='position', - name='accepting_feedback', - field=models.BooleanField(default=False, verbose_name=b'Is accepting feedback'), - ), - migrations.AddField( - model_name='position', - name='accepting_nominations', - field=models.BooleanField(default=False, verbose_name=b'Is accepting nominations'), - ), - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/nomcom/migrations/0014_alter_is_open_help_text.py b/ietf/nomcom/migrations/0014_alter_is_open_help_text.py deleted file mode 100644 index 16ebf96d2..000000000 --- a/ietf/nomcom/migrations/0014_alter_is_open_help_text.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-22 08:19 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0013_position_nomination_feedback_switches'), - ] - - operations = [ - migrations.AlterField( - model_name='position', - name='is_open', - field=models.BooleanField(default=False, help_text=b'Set is_open when the nomcom is working on a position. Clear it when an appointment is confirmed.', verbose_name=b'Is open'), - ), - ] diff --git a/ietf/nomcom/migrations/0015_show_pictures.py b/ietf/nomcom/migrations/0015_show_pictures.py deleted file mode 100644 index 5e6f359d2..000000000 --- a/ietf/nomcom/migrations/0015_show_pictures.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-23 12:18 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('nomcom', '0014_alter_is_open_help_text'), - ] - - operations = [ - migrations.AddField( - model_name='nomcom', - name='show_nominee_pictures', - field=models.BooleanField(default=True, help_text=b'Display pictures of each nominee (if available) on the feedback pages', verbose_name=b'Show nominee pictures'), - ), - ] diff --git a/ietf/nomcom/migrations/0016_add_topics.py b/ietf/nomcom/migrations/0016_add_topics.py deleted file mode 100644 index 7c3557104..000000000 --- a/ietf/nomcom/migrations/0016_add_topics.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-25 12:34 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0020_add_topics'), - ('dbtemplate', '0006_adjust_feedback_receipt_template'), - ('person', '0019_add_discovered_people'), - ('nomcom', '0015_show_pictures'), - ] - - operations = [ - migrations.CreateModel( - name='Topic', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('subject', models.CharField(help_text=b'This short description will appear on the Feedback pages.', max_length=255, verbose_name=b'Name')), - ('accepting_feedback', models.BooleanField(default=False, verbose_name=b'Is accepting feedback')), - ('audience', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.TopicAudienceName')), - ('description', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='description', to='dbtemplate.DBTemplate')), - ('nomcom', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.NomCom')), - ], - options={ - 'verbose_name_plural': 'Topics', - }, - ), - migrations.CreateModel( - name='TopicFeedbackLastSeen', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('time', models.DateTimeField(auto_now=True)), - ('reviewer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), - ('topic', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nomcom.Topic')), - ], - ), - migrations.AddField( - model_name='feedback', - name='topics', - field=models.ManyToManyField(blank=True, to='nomcom.Topic'), - ), - ] diff --git a/ietf/person/migrations/0001_initial.py b/ietf/person/migrations/0001_initial.py index a995f1a27..f04d7b4e4 100644 --- a/ietf/person/migrations/0001_initial.py +++ b/ietf/person/migrations/0001_initial.py @@ -1,13 +1,21 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations import datetime from django.conf import settings +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ietf.person.models +import ietf.utils.models +import ietf.utils.storage class Migration(migrations.Migration): + initial = True + dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] @@ -16,70 +24,107 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Alias', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=255, db_index=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(db_index=True, max_length=255)), ], options={ 'verbose_name_plural': 'Aliases', }, - bases=(models.Model,), ), migrations.CreateModel( name='Email', fields=[ - ('address', models.CharField(max_length=64, serialize=False, primary_key=True)), + ('address', models.CharField(max_length=64, primary_key=True, serialize=False, validators=[django.core.validators.EmailValidator()])), ('time', models.DateTimeField(auto_now_add=True)), + ('primary', models.BooleanField(default=False)), ('active', models.BooleanField(default=True)), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='Person', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), - ('name', models.CharField(max_length=255, db_index=True)), - ('ascii', models.CharField(max_length=255)), - ('ascii_short', models.CharField(max_length=32, null=True, blank=True)), - ('address', models.TextField(max_length=255, blank=True)), - ('affiliation', models.CharField(max_length=255, blank=True)), - ('user', models.OneToOneField(null=True, blank=True, to=settings.AUTH_USER_MODEL)), + ('name', models.CharField(db_index=True, help_text=b'Preferred form of name.', max_length=255, verbose_name=b'Full Name (Unicode)')), + ('ascii', models.CharField(help_text=b'Name as rendered in ASCII (Latin, unaccented) characters.', max_length=255, verbose_name=b'Full Name (ASCII)')), + ('ascii_short', models.CharField(blank=True, help_text=b'Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).', max_length=32, null=True, verbose_name=b'Abbreviated Name (ASCII)')), + ('affiliation', models.CharField(blank=True, help_text=b'Employer, university, sponsor, etc.', max_length=255)), + ('address', models.TextField(blank=True, help_text=b'Postal mailing address.', max_length=255)), + ('biography', models.TextField(blank=True, help_text=b'Short biography for use on leadership pages. Use plain text or reStructuredText markup.')), + ('photo', models.ImageField(blank=True, default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photo')), + ('photo_thumb', models.ImageField(blank=True, default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photo')), + ('user', ietf.utils.models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'abstract': False, }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='PersonalApiKey', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('endpoint', models.CharField(choices=[(b'/api/iesg/position', b'/api/iesg/position')], max_length=128)), + ('created', models.DateTimeField(default=datetime.datetime.now)), + ('valid', models.BooleanField(default=True)), + ('salt', models.BinaryField(default=ietf.person.models.salt, max_length=12)), + ('count', models.IntegerField(default=0)), + ('latest', models.DateTimeField(blank=True, null=True)), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='apikeys', to='person.Person')), + ], + ), + migrations.CreateModel( + name='PersonEvent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(default=datetime.datetime.now, help_text=b'When the event happened')), + ('type', models.CharField(choices=[(b'apikey_login', b'API key login')], max_length=50)), + ('desc', models.TextField()), + ], + options={ + 'ordering': ['-time', '-id'], + }, ), migrations.CreateModel( name='PersonHistory', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), - ('name', models.CharField(max_length=255, db_index=True)), - ('ascii', models.CharField(max_length=255)), - ('ascii_short', models.CharField(max_length=32, null=True, blank=True)), - ('address', models.TextField(max_length=255, blank=True)), - ('affiliation', models.CharField(max_length=255, blank=True)), - ('person', models.ForeignKey(related_name='history_set', to='person.Person')), - ('user', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True)), + ('name', models.CharField(db_index=True, help_text=b'Preferred form of name.', max_length=255, verbose_name=b'Full Name (Unicode)')), + ('ascii', models.CharField(help_text=b'Name as rendered in ASCII (Latin, unaccented) characters.', max_length=255, verbose_name=b'Full Name (ASCII)')), + ('ascii_short', models.CharField(blank=True, help_text=b'Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).', max_length=32, null=True, verbose_name=b'Abbreviated Name (ASCII)')), + ('affiliation', models.CharField(blank=True, help_text=b'Employer, university, sponsor, etc.', max_length=255)), + ('address', models.TextField(blank=True, help_text=b'Postal mailing address.', max_length=255)), + ('biography', models.TextField(blank=True, help_text=b'Short biography for use on leadership pages. Use plain text or reStructuredText markup.')), + ('photo', models.ImageField(blank=True, default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photo')), + ('photo_thumb', models.ImageField(blank=True, default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photo')), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='history_set', to='person.Person')), + ('user', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'abstract': False, }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='PersonApiKeyEvent', + fields=[ + ('personevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='person.PersonEvent')), + ('key', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.PersonalApiKey')), + ], + bases=('person.personevent',), + ), + migrations.AddField( + model_name='personevent', + name='person', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person'), ), migrations.AddField( model_name='email', name='person', - field=models.ForeignKey(to='person.Person', null=True), - preserve_default=True, + field=ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Person'), ), migrations.AddField( model_name='alias', name='person', - field=models.ForeignKey(to='person.Person'), - preserve_default=True, + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person'), ), ] diff --git a/ietf/person/migrations/0002_email_primary.py b/ietf/person/migrations/0002_email_primary.py deleted file mode 100644 index dca735bd2..000000000 --- a/ietf/person/migrations/0002_email_primary.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='email', - name='primary', - field=models.BooleanField(default=False), - preserve_default=True, - ), - ] diff --git a/ietf/person/migrations/0003_auto_20150304_0829.py b/ietf/person/migrations/0003_auto_20150304_0829.py deleted file mode 100644 index 8ce3e8a36..000000000 --- a/ietf/person/migrations/0003_auto_20150304_0829.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations # pyflakes:ignore - - -def set_primary_email(apps, schema_editor): - Person = apps.get_model("person", "Person") - for person in Person.objects.all(): - email = person.email_set.order_by("-active","-time").first() - if email: - email.primary = True - email.save() - -def clear_primary_email(apps, schema_editor): - Person = apps.get_model("person", "Person") - for person in Person.objects.all(): - email_list = person.email_set.filter(primary=True) - for email in email_list: - email.primary = False - email.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0002_email_primary'), - ] - - operations = [ - migrations.RunPython( - set_primary_email, - clear_primary_email), - ] diff --git a/ietf/person/migrations/0004_auto_20150308_0440.py b/ietf/person/migrations/0004_auto_20150308_0440.py deleted file mode 100644 index 2f144b696..000000000 --- a/ietf/person/migrations/0004_auto_20150308_0440.py +++ /dev/null @@ -1,115 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -#from django.db import models, migrations # pyflakes:ignore -from django.db import migrations -from django.conf import settings - -from ietf.utils.mail import send_mail_text - -# Tiny detail: making the text below look nice is of course dependent on -# how long the email addresses and draft name which are inserted into the -# text actually turn out to be. Rather than bothering to re-flow the text, -# it can be noted that the average email address length, calculated over the -# addresses this will be run for, was 21, and the length of the string -# '%(inacive_email)s' is 18, so just formatting naturally should come out -# pretty nicely in most cases. - - -email_template = """ -Hi, - -As part of a review of active and inactive email addresses in the datatracker, -it has been found that your address <%(inactive_email)s>, which is mentioned -in the active draft %(draft_name)s, was set to inactive. - -As a consequence of this, it would not be receiving notifications related to -that draft, from the datatracker or through the draft aliases. The -notifications and aliases would instead have used <%(primary_email)s>. - -This most likely was not what you intended when you used <%(inactive_email)s> -in the draft, so that address has now been set to active. The datatracker and -draft aliases will now use it. - -If you have a datatracker account, and had manually set the status for -<%(inactive_email)s> to inactive, we apologize for interfering. Please set it -to inactive again, by using https://datatracker.ietf.org/accounts/profile/. We -don't anticipate changing it automatically again. - -If you don't have a datatracker account, then all should be good -- we've -simply set things to be the way they were expected to be. - - -Best regards, - - Henrik, via the inactive email migration script - -""" - -def activate_draft_email(apps, schema_editor): - Document = apps.get_model("doc", "Document") - change_count = 0 - notify_user_count = 0 - for doc in Document.objects.filter(type__slug='draft', states__slug='active').order_by('-time'): - for email in doc.authors.all(): - if email.active == False: - person = email.person - primary = person.email_set.filter(active=True).order_by('-time').first() - email.active = True - email.save() - change_count += 1 - # If there isn't a primary address, ther's no active - # addresses, and it can't be other than right to change the - # draft email address to active. Otherwise, notify the owner. - if primary: - notify_user_count +=1 - primary_email = primary.address - inactive_email = email.address - if settings.SERVER_MODE == 'production': - context = dict( - primary_email=primary_email, - inactive_email=inactive_email, - draft_name=doc.name, - ) - send_mail_text( - request=None, - to=[ primary_email, inactive_email ], - frm="Henrik Levkowetz ", - subject="Changed email settings for you in the datatracker", - txt= email_template % context, - extra={"Reply-To": "Secretariat "}, - ) - print("") - print("Set %s email addresses to active" % change_count) - print("Notified %s users, who had at least one other active email." % notify_user_count) - -def deactivate_draft_email(apps, scema_editor): - """ - The backwards migration doesn't touch the active field of any email addresses. - We don't have the information to exactly undo what the forward migration did, - and on 08 Mar 2015, there were 1178 inactive email addresses coupled to active - drafts, and 4237 active addresses coupled to active drafts. The harm would - be substantial if those active addresses were set to inactive. - """ -# Document = apps.get_model("doc", "Document") -# print(" Not setting email addresses to inactive") -# count = 0 -# for doc in Document.objects.filter(type__slug='draft', states__slug='active'): -# for email in doc.authors.all(): -# if email.active == True: -# #print email.address -# count += 1 -# print("Left %s active email addresses untouched " % count) - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0003_auto_20150304_0829'), - ('doc', '0002_auto_20141222_1749'), - ] - - operations = [ - migrations.RunPython( - activate_draft_email, - deactivate_draft_email), - ] diff --git a/ietf/person/migrations/0005_deactivate_unknown_email.py b/ietf/person/migrations/0005_deactivate_unknown_email.py deleted file mode 100644 index 4ef73a2c1..000000000 --- a/ietf/person/migrations/0005_deactivate_unknown_email.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - Email = apps.get_model('person','Email') - Email.objects.filter(address__startswith="unknown-email-",active=True).update(active=False) - -def reverse(apps,schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0004_auto_20150308_0440'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/person/migrations/0006_auto_20160503_0937.py b/ietf/person/migrations/0006_auto_20160503_0937.py deleted file mode 100644 index d6c03557b..000000000 --- a/ietf/person/migrations/0006_auto_20160503_0937.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0005_deactivate_unknown_email'), - ] - - operations = [ - migrations.AlterField( - model_name='person', - name='ascii', - field=models.CharField(max_length=255, verbose_name=b'Full Name (ASCII)'), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='ascii_short', - field=models.CharField(max_length=32, null=True, verbose_name=b'Abbreviated Name (ASCII)', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='name', - field=models.CharField(max_length=255, verbose_name=b'Full Name (Unicode)', db_index=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='ascii', - field=models.CharField(max_length=255, verbose_name=b'Full Name (ASCII)'), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='ascii_short', - field=models.CharField(max_length=32, null=True, verbose_name=b'Abbreviated Name (ASCII)', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='name', - field=models.CharField(max_length=255, verbose_name=b'Full Name (Unicode)', db_index=True), - preserve_default=True, - ), - ] diff --git a/ietf/person/migrations/0007_auto_20160520_0304.py b/ietf/person/migrations/0007_auto_20160520_0304.py deleted file mode 100644 index 54547774a..000000000 --- a/ietf/person/migrations/0007_auto_20160520_0304.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0006_auto_20160503_0937'), - ] - - operations = [ - migrations.AlterField( - model_name='person', - name='address', - field=models.TextField(help_text=b'Postal mailing address.', max_length=255, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='affiliation', - field=models.CharField(help_text=b'Employer, university, sponsor, etc.', max_length=255, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='ascii', - field=models.CharField(help_text=b'Name as rendered in ASCII (Latin, unaccented) characters.', max_length=255, verbose_name=b'Full Name (ASCII)'), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='ascii_short', - field=models.CharField(help_text=b'Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).', max_length=32, null=True, verbose_name=b'Abbreviated Name (ASCII)', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='name', - field=models.CharField(help_text=b'Preferred form of name.', max_length=255, verbose_name=b'Full Name (Unicode)', db_index=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='address', - field=models.TextField(help_text=b'Postal mailing address.', max_length=255, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='affiliation', - field=models.CharField(help_text=b'Employer, university, sponsor, etc.', max_length=255, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='ascii', - field=models.CharField(help_text=b'Name as rendered in ASCII (Latin, unaccented) characters.', max_length=255, verbose_name=b'Full Name (ASCII)'), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='ascii_short', - field=models.CharField(help_text=b'Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).', max_length=32, null=True, verbose_name=b'Abbreviated Name (ASCII)', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='name', - field=models.CharField(help_text=b'Preferred form of name.', max_length=255, verbose_name=b'Full Name (Unicode)', db_index=True), - preserve_default=True, - ), - ] diff --git a/ietf/person/migrations/0008_add_biography_field.py b/ietf/person/migrations/0008_add_biography_field.py deleted file mode 100644 index f4e00bc41..000000000 --- a/ietf/person/migrations/0008_add_biography_field.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0007_auto_20160520_0304'), - ] - - operations = [ - migrations.AddField( - model_name='person', - name='biography', - field=models.TextField(help_text=b'Short biography for use on leadership pages.', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='personhistory', - name='biography', - field=models.TextField(help_text=b'Short biography for use on leadership pages.', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/person/migrations/0009_populate_biography.py b/ietf/person/migrations/0009_populate_biography.py deleted file mode 100644 index 82d418c2d..000000000 --- a/ietf/person/migrations/0009_populate_biography.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -bios = { - -'Jari Arkko' : 'Jari Arkko is an Expert on Internet Architecture with Ericsson Research in Jorvas, Finland. At the IETF, he has served six years as one of the Internet Area Directors in the Internet Engineering Steering Group (IESG). He has published 32 RFCs, including specifications for Mobile IPv6, EAP-AKA, Diameter, SEND, and various IPv6 related documents. He has previously served as a chair of three IETF working groups, and has created and terminated over a dozen of working groups at the IETF in his Area Director role. Jari also serves as a chair of the Technical Advisory Board for the IP Smart Objects Alliance (IPSO) and works in a number of research projects at Ericsson. In the past, Jari has worked in the implementation of routers, VPN software, testing tools, modem banks, cellular network nodes, AAA systems, compilers, and AI systems. He received his Licentiate\'s degree from Helsinki University of Technology in 1996. Jari\'s main interests in the Internet include architecture, IPv6, small implementations, the Internet of Things, social media, Internet governance, and cutting through hype that often surrounds some aspects of our technology. He likes to build and and use the technology that he works with. For instance, he moved to an IPv6-only network in 2010 and builds smart home networks as a hobby. He frequently communicates with his laundry on Facebook.', - -'Ralph Droms' : 'Dr. Ralph Droms is a Cisco Distinguished Engineer in the office of the Enterprise Networking CTO. At Cisco, he heads up a research project in the application of ICN to sensor and actuator networks. Dr. Droms is also working on highly scalable DNS service discovery. Dr. Droms organized the IETF working group that designed DHCP in 1989 and has been active in the IETF in several roles ever since. He is an author of more than 20 RFCs, including many of the core DHCP specifications. Dr. Droms chaired the dhc WG until 2009, when he was selected to be an Internet Area Director in the IESG. In addition to serving on the IAB, Dr. Droms is currently co-chair of the dnssd WG and technical advisor to the 6lo WG. Dr. Droms was also an editor for the IPv6 requirements in the CableLabs DOCSIS 3.0 specification and contributed to the ZigBee Alliance ZigBee-IP specification. Prior to joining Cisco in 2000, Dr. Droms was a member of the computer science department faculty at Bucknell University and co-director of the Computer Center at Bucknell. He has also been a member of the computer science faculty at Pennsylvania State University, and was on the research staff at both IBM and Burroughs (Unisys). Dr. Droms is a co-author of "The DHCP Handbook". His PhD is in computer science from Purdue University.', - -'Ted Hardie' : 'Ted Hardie currently works for Google, putting networks, protocols, and people together in new and optimal ways. Ted first worked in the Internet field in 1988 when he joined the operations staff of the SRI NIC. He later became the technical lead for the NASA NIC, part of the NASA Science Internet project. After leaving NASA, he joined Equinix as its initial Director of Engineering before taking on the role of Director of Research and Development. He was an early-stage executive at Nominum before joining Qualcomm R & D. While he was Qualcomm\'s Director of Internet and Wireless, he served the Internet community as a member of the Internet Architecture Board and as an Applications Area Director for the IETF. He served as Trustee of the Internet Society from 2007 to 2010, and as its Treasurer in 2008 to 2010, while Managing Director of Panasonic\'s Silicon Valley Wireless Research Lab. Dr. Hardie received his bachelor\'s degree from Yale and his doctorate from Stanford. He has been a Fulbright Fellow and a Yale-China Fellow, both in Hong Kong.', - -'Joe Hildebrand' : 'Joe Hildebrand is a Cisco Distinguished Engineer in the Corporate Strategic Innovation Group, which builds corporate-scale technology strategies for Cisco. Previously, he ran architecture for WebEx, was the CTO at Jabber Inc., was the Chief Architect at a custom software development company, built battlefield messaging systems, and engineered robots and their control systems for safety-critical applications. Joe has co-chaired several IETF working groups (including XMPP, HyBi, and webpush), serves on the RFC Series Oversight Committee (RSOC), and has a deep interest in protocols designed for use by typical application developers. He received a B.S. in Mechanical Engineering from Virginia Tech in 1992.', - -'Russ Housley' : 'Russ Housley has worked in the computer and network security field since 1982, and he founded Vigil Security, LLC in September 2002. Russ began serving as the IETF Chair in March 2007. His security research and standards interests include security protocols, certificate management, cryptographic key distribution, and high assurance design and development practices. Prior to accepting the IETF Chair position, Russ served as the Security Area Director, and prior to that he chaired the Secure MIME (S/MIME) Working Group. Russ was editor for several cornerstone Internet PKI standards (including RFC 3280). In November 2004, Russ was recognized by the IEEE 802.11 working group for his contributions to IEEE 802.11i-2004, which fixes the severe security shortcoming of the Wired Equivalent Privacy (WEP). Russ received his B.S. in computer science from Virginia Tech in 1982, and he received his M.S. in computer science from George Mason University in 1992.', - -'Lee Howard' : 'Lee Howard is the Director of Network Technology for Time Warner Cable, where he leads efforts in evolving technologies, and the company\'s deployment of IPv6. His team includes network measurement, tools, and security. In addition to his IETF work, he has contributed to or presented at CableLabs, SCTE, NANOG, and every RIR. Previous work has included experience at enterprise networks, application hosting, and large and small ISPs. He has served on the ARIN Board of Trustees and the NRO NC.', - -'Erik Nordmark' : 'Erik Nordmark works on networking software at Arista based in California, USA. He has been active in the IETF since the early 1990-ies, as key contributor to IPv6 standards,co-chair in Mobile IP and TRILL, and as an Internet Area Director. His interest is in expanding the reach and capability of the core Internet standards to datacenters, virtualization, and towards low-powered devices, by providing architectures and standards that are robust across a large range of scales. Erik holds a Technical Licentiate Degree from Uppsala University and a Master of Science from Stanford University.', - -'Robert Sparks' : 'Robert Sparks is a member of the RFC Series Oversight Committee and the IAOC\'s Tools Development and Technology Management Committees. He is a co-chair of the STIR working group, and is a past-chair of the SIMPLE and GEOPRIV working groups. Robert was an Area Director for the Real-time Applications and Infrastructure area from 2009-2013. He is a co-author of the core SIP specification and several of its updates and extensions, and has focused on improving the level of interoperability of SIP implementations by coordinating the SIPit interoperability events. He is also an active open source contributor. Robert is a Senior Principal Member of Technical Staff at Oracle. Before joining Oracle, he was a Principal Engineer at Tekelec, the VP of Research and Development at Estacado Systems, CTO at Xten Networks (now CounterPath), and has held management and research positions at dynamicsoft, Lucent, Worldcom and Texas A&M University. For over 15 years, Robert has focused on designing and developing real-time IP communications systems. Robert has a BSc in Computer Science and a MSc in Mathematics from Texas A&M University.', - -'Andrew Sullivan' : 'Andrew Sullivan is Director of DNS Engineering at Dyn, an Infrastructure as a Service company based in Manchester, New Hampshire, USA. He has been active in the IETF since 2005, and served as co-chair of the DNSEXT and SPFBIS working groups. His main areas of network specialization are the DNS and internationalization. Andrew holds a BA from the University of Ottawa and an MA from McMaster University, both in philosophy.', - -'Dave Thaler': 'Dave Thaler is a Software Architect in the Windows Networking and Devices division at Microsoft. Prior to joining Microsoft in 1998, he was a routing developer at Merit Network. Since then, he has been responsible for multicast, IPv6, network diagnostics, and peer-to-peer efforts within Windows Networking, and also led the TCP/IP team during the design of the new TCP/IP stack in Windows Vista. Dave has been active in the IETF since 1995 and has authored over 20 RFCs, covering IPv6, multicast, MIBs, etc. He is also a member of the MIB Doctors group, and previously served as co-chair of the MALLOC WG. Dave holds a Ph.D in Computer Science from the University of Michigan. Website: http://research.microsoft.com/users/dthaler', - -'Martin Thomson' : 'Martin Thomson is an engineer at Mozilla. There he works on open standards in both the IETF and W3C. His recent work includes HTTP/2 and Web Push, and he is a core contributor to HTTP, TLS, and WebRTC. He previously worked at Microsoft, Commscope and Nortel on system architecture. Technical interests are privacy, security, and the messy interface where standardized protocols are applied to real problems.', - -'Brian Trammell' : 'Brian Trammell is a Senior Researcher at the CSG at the Swiss Federal Institute of Technology (ETH) Zurich. His primary focus is on network monitoring and measurement, specifically on performance measurement, security monitoring, measurement tools, and privacy issues in measurement and management. Active in the IETF since 2005, he\'s co-authored 15 RFCs in the Security and Operations/Management areas, and co-chairs the IP Performance Metrics working group. Prior to his work with CSG, he was Engineering Technical Lead at the CERT Network Situational Awareness group, and a veteran of a variety of short-lived Internet start-ups. He earned a BS in Computer Science from Georgia Tech in 2000.', - -'Suzanne Woolf' : 'Suzanne is an independent consultant specializing in Internet infrastructure operations and policy. Her experience includes carrier network operations, DNS administration and root name server operations, IP address and DNS policy, infrastructure protocol development and implementation, and open source software engineering management in related areas. Her long-term background in technology and policy with the USC Information Sciences Institute, Internet Systems Consortium, ICANN, and current consulting clients have left her fascinated with the problems of technology at Internet scale, committed to building more open Internet, and warily interested in internet governance. Her primary technical interests include DNS and other naming systems, basic access and connectivity issues such as IPv4-IPv6 co-existence and the transition to IPv6, and supporting the growth of open systems in an increasingly compartmentalized and fragmented network.', - -'Lars Eggert' : 'Lars Eggert is Technical Director for Networking in NetApp’s Advanced Technology Group, based in Munich, Germany. In addition, Lars is an Adjunct Professor at Aalto University, Finland’s premier technical university. He pursues his scientific research interests in diverse areas of Internet technology, including architecture, end-to-end protocols, virtualization, measurements and resource scheduling, through collaborative research projects with leading universities and research labs, in part supported by DARPA, the NSF or the EU. Lars has also been leading the standardization efforts of many related topics as a steering group member of the IETF, and he currently chairs the IRTF, the IETF’s research arm. He is a senior member of the ACM and the IEEE, and serves on the program and organization committees of many academic conferences and workshops, such as ACM SIGCOMM and IEEE Infocom. Lars received his Ph.D. in Computer Science from the University of Southern California (USC) in 2003. Before joining NetApp in 2011, he was a Principal Scientist at Nokia Research Center in Helsinki, Finland and one of Nokia’s most senior technology experts, serving on the corporation’s CTO Technology Council. Before that, he was a senior researcher at NEC Laboratories.', - -'Ben Campbell' : 'Ben Campbell currently serves as a Principal Engineer at Oracle Communications, and as an Area Director for the Real-time Applications and Infrastructure (RAI) area of the IETF. He previously served as a chair for the DART, XMPP, and SIMPLE working groups.\nBen has worked in the IETF since 2000, primarily focused on real-time communication protocols. He co-authored several RFCs in the area, including RFC 3428 and RFC 4975. Prior to joining Oracle, he worked in the Tekelec CTO Team, and was a founding partner at Estacado Systems. When not reading internet-drafts, Ben enjoys sailing and middle-eastern percussion.', - -'Alissa Cooper' : 'Alissa Cooper is a Distinguished Engineer at Cisco Systems, where she is responsible for driving privacy and policy strategy within the company\'s portfolio of real-time collaboration products. She currently serves as Real-Time Applications and Infrastructure (RAI) area director within the Internet Engineering Task Force (IETF). Previously, Alissa served as the Chief Computer Scientist at the Center for Democracy and Technology, where she was a leading public interest advocate and technologist on issues related to privacy, net neutrality, and technical standards. Alissa holds a PhD from the Oxford Internet Institute and MS and BS degrees in computer science from Stanford University.', - -'Alexey Melnikov' : 'Alexey Melnikov is currently co-director of the IETF Applications and Real-Time Area and is the Internet Messaging Team Lead at Isode. In his spare time he also tries to help maintain Cyrus SASL. Alexey is the author or co-author of 29+ published RFCs related to electronic mail and application layer security. In the past he co-chaired the Sieve, Kitten and Usefor IETF Working Groups. Since 1998 his areas of interest have included IMAP, email filtering using Sieve, mobile network optimizations of application protocols, application protocol and format design, real-time collaboration and security frameworks for providing authentication and data integrity/confidentiality. Alexey received a bachelor\'s degree with honors in computer science and mathematics from Moscow State University.', - -'Suresh Krishnan' : 'Suresh Krishnan works as a Distinguished Engineer at Ericsson where his main areas of work are in 5G wireless networks, network simplification, software defined networks and M2M. He has a Bachelor\'s degree in Electrical Engineering from the University of Madras in India and a Masters degree in Electrical Engineering from Concordia University in Canada. He has chaired the dna, intarea, and the sofwire working groups in the IETF, the mobopts research group in the IRTF and has authored more than 30 RFCs across multiple IETF areas.', - -'Terry Manderson' : 'Terry is the Director of DNS Engineering at ICANN, he is responsible for L-root (one of the 13 root servers) and manages the talented team that keeps it humming along with the infrastructure supporting the portfolio of ICANN organisational domains. Terry also serves on the board of AusNOG, the Australian Network Operators Group. For almost all of his career he has held operationally focused roles and, while Terry has a number academic parchments on the wall, he prefers to see tangible links between concepts and actually deployability. In the research realm Terry is most interested in advancements in Internet networking (home, enterprise, global) and the behaviours of large scale network services and topologies, and the impact they have on the end user.\nTerry lives in Brisbane, Australia, with his wife Lauren, two daughters Phoenix and Caitlyn, and their highly trained attack guinea pigs. He gets his kicks from refereeing ice hockey and has an unhealthy fascination with motorcycles, especially Italian made sports bikes. Asking about what happened to the BMW motorcycles in Maastricht (IETF78) is unwise as the memory and pain is yet to fade.', - -'Benoit Claise' : 'Benoit Claise is a Cisco Distinguished Engineer at Cisco Systems, working as an architect for embedded management and device instrumentation. Areas of passion & expertise include Internet traffic monitoring, accounting, performance, fault management, configuration management, deep packet inspection, and energy management. Benoit has been working in the IETF since 2001, mainly in the Operations and Management Area, with more than 30 RFCs in the domain of IP Flow Information eXport - IPFIX, Packet SAMPling - PSAMP, IP Performance Metrics - IPPM, Performance Metrics at Other Layer - PMOL, and Energy MANagment - EMAN. IETF WG: he currently serves as the IETF Area Director for Operations and Management, focusing on YANG-related activities.\n These days, Benoit focuses on configuration management, network automation, and data-model driven management. From a technology point of view, this means YANG as THE data model language, standard YANG data models, NETCONF and RESTCONF as the protocols, etc.\n Benoit is the author of the ciscopress book "Network Management: Accounting and Performance Strategies".', - -'Joel Jaeggli' : 'Joel Jaeggli is a Network Architect at Zynga. Prior to serving as IETF Operations and Management Area director, he co-chaired the v6ops and opsec working groups.', - -'Alia Atlas' : 'Alia K. Atlas has 15 years of experience in the routing area. She started with research at BBN, built and designed routers at Avici Systems, worked on data-center fabrics and management at Google, did network modeling and planning at British Telecom, and works on routing architecture and technologies at Juniper Networks. In the IETF, she was the co-chair of the RTGWG and I2RS working groups. She is an author of RFC 4090, RFC 5286, RFC 5440, RFC 5443, and RFC 5837. Knowing that "bad things happen to good networks", she has a technical interest in resiliency and fast-reroute in routing. Alia has a PhD in Computer Science from Boston University and a B.S. in Electrical Engineering from MIT. Alia works in the Routing Architecture and Technology group at Juniper Networks.', - -'Deborah Brungard' : 'Deborah Brungard is a Lead Member of Technical Staff in network architecture and service planning at AT&T. Her current work is on SDN and NFV. She has been with AT&T for more than 30 years, working in various areas, primarily on international services and network operations. Early in her career, she was part of the first group of AT&T expatriates working in The Netherlands. She has been involved in standards development for more than 15 years and has held various leadership positions in IETF, ITU-T and ANSI. She has been most active in the Routing Area, Co-Chair of both CCAMP and TEAS. She received her Master of Engineering in Electrical Engineering from Stevens Institute of Technology, Hoboken, NJ, USA. Her main passion is escaping in her Silver Bullet (Airstream - the Taj Mahal for campers).', - -'Alvaro Retana' : 'Alvaro Retana is a Distinguished Engineer at Cisco Systems, where he works on Strategic Customer Enablement. He also chairs the IETF-LAC Task Force for LACNOG, with the objective of increasing the participation of people from Latin America and the Caribbean in the IETF. He has published 4 technical books and has been awarded multiple patents by the US Patent and Trademark Office. Alvaro\'s current interests include Software Defined Networking, energy efficiency, infrastructure security, network complexity and other related topics.\n Alvaro has been participating in the IETF since 1998, mainly in the Routing Area. He previously co-chaired Routing Area Working Group (rtgwg) and the Source Packet Routing in Networking WG (spring), and has co-authored several documents on routing technology. Alvaro currently serves as Routing Area Director.', - -'Stephen Farrell' : 'Stephen Farrell is a research fellow in CONNECT, a Science Foundation Ireland research institute and the school of Computer Science and Statistics at Trinity College Dublin, where he teaches and researches on security and delay/disruption-tolerant networking (DTN), and in 2006 co-authored the first book on the latter topic. He is a co-founder of Tolerant Networks Limited, a TCD campus company. Stephen has been a security area director since 2011.\nThe main funding that supports Stephen in his role as area director comes from the CONNECT centre, with additional support from IE Domain Registry Limited (IEDR - the .ie ccTLD) and Google.', - -'Kathleen Moriarty' : 'Serving as the IETF Security Area Director, Kathleen Moriarty is also the Global Lead Security Architect with the EMC Office of the CTO working on technology strategy and standards. Kathleen has been the primary author of multiple published standards and actively contributes to security standards activity in the IETF. Previously, as the Practice Manager for security consulting at EMC, Kathleen was responsible for oversight of key projects, and development of security programs, in addition to serving as the acting CISO of a global investment banking firm. Kathleen has also been the head of IT Security at MIT Lincoln Laboratory and the Director of Information Security at FactSet Research Systems. Kathleen holds a Masters of Science degree in Computer Science from Rensselaer Polytechnic Institute.', - -'Spencer Dawkins' : 'Spencer Dawkins is Senior Standards Manager at Huawei Technologies (USA) in Plano, Texas by day, and hand-drummer at IETF plenaries by night. Spencer began participating in the Internet Engineering Task Force in 1996, served as co-chair for the MARTINI, MEDIACTRL, and SIPCLF working groups in the Realtime Applications and Infrastructure Area, and as co-chair for the PILC working group in the Transport Area. Spencer is a recovering IETF process wonk, having served on the General Area Directorate and on the author team for RFC 3774, and as editor for several revisions to the NomCom process specification, and also served on the General Area Review Team from its formation in 2004 until he was selected for the IAB in 2010. Spencer also serves as Technical Director for the SIP Forum.\n Prior to joining Huawei, Spencer engineered GPRS and VoIP network monitor products for Inet Technologies/Tektronix, did product architecture for protocol accelerators at a start-up and for next-generation SONET switches at Fujitsu Network Communications, and served in a variety of roles at Nortel Networks, where he started out as a business systems computer programmer, but fast-talked his way into networking product development after reading Andrew Tanenbaum\'s "Computer Networks", which changed Spencer’s life. Spencer holds BBA and MS degrees from the University of North Texas, has a lovely wife named Shirley, and volunteers with early-teenaged kids, where the weirdness keeps him young.', - -'Mirja Kühlewind' : 'Mirja Kühlewind is senior researcher at the Networked Systems Group of the Computer Engineering and Networks Laboratory at ETH Zurich. She received here PhD in 2015 from the University of Stuttgart where she worked on protocol design and TCP congestion control at the Institute of Communication Networks and Computer Engineering (IKR). Her research interests additionally include Internet measurements with a focus on middlebox impairments and cooperation. Further, Mirja is the project coordinator of a new EU research project in this area: Measurement and Architecture for a Middleboxed Internet (MAMI). Mirja was selected as IETF Transport Area Director in 2016; prior to that, she was co-chair of the IETF\'s RTP Media Congestion Avoidance Techniques (rmcat) and TCP increased security (tcpinc) working groups. She also co-chairs the Measurement and Analysis for Protocols research group (maprg) in the IRTF.' , - -} - - -def add_biography(apps, schema_editor): - Person = apps.get_model('person','Person') - for name in bios.keys(): - person = Person.objects.get(name=name) - person.biography = bios[name] - person.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0008_add_biography_field'), - ] - - operations = [ - migrations.RunPython(add_biography, None) - ] diff --git a/ietf/person/migrations/0010_add_photo_fields.py b/ietf/person/migrations/0010_add_photo_fields.py deleted file mode 100644 index 9b52f1a99..000000000 --- a/ietf/person/migrations/0010_add_photo_fields.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import ietf.utils.storage - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0009_populate_biography'), - ] - - operations = [ - migrations.AddField( - model_name='person', - name='photo', - field=models.ImageField(storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photos/', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='person', - name='photo_thumb', - field=models.ImageField(storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photos/', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='personhistory', - name='photo', - field=models.ImageField(storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photos/', blank=True), - preserve_default=True, - ), - migrations.AddField( - model_name='personhistory', - name='photo_thumb', - field=models.ImageField(storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photos/', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/person/migrations/0011_populate_photos.py b/ietf/person/migrations/0011_populate_photos.py deleted file mode 100644 index 3e0ae85c3..000000000 --- a/ietf/person/migrations/0011_populate_photos.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import os - -from hashids import Hashids - -from django.db import migrations -from django.conf import settings -from django.utils.text import slugify - -from ietf.person.name import name_parts - -def photo_name(person,thumb=False): - hasher = Hashids(salt='Person photo name salt',min_length=5) - _, first, _, last, _ = name_parts(person.ascii) - return '%s-%s%s' % ( slugify("%s %s" % (first, last)), hasher.encode(person.id), '-th' if thumb else '' ) - -def forward(apps,schema_editor): - Person = apps.get_model('person','Person') - images_dir = settings.PHOTOS_DIR - image_filenames = [] - for (dirpath, dirnames, filenames) in os.walk(images_dir): - image_filenames.extend(filenames) - break # Only interested in the files in the top directory - image_basenames = [os.path.splitext(name)[0] for name in image_filenames] - for person in Person.objects.all(): - if not person.name.strip(): - continue - dirty = False - if photo_name(person,thumb=False) in image_basenames: - person.photo = os.path.join(settings.PHOTOS_DIRNAME, image_filenames[image_basenames.index(photo_name(person,thumb=False))]) - dirty = True - if photo_name(person,thumb=True) in image_basenames: - person.photo_thumb = os.path.join(settings.PHOTOS_DIRNAME, image_filenames[image_basenames.index(photo_name(person,thumb=True))]) - dirty = True - if dirty: - person.save() - -def reverse(apps, schema_editor): - Person = apps.get_model('person','Person') - for person in Person.objects.filter(photo__gt=''): - person.photo = None - person.save() - for person in Person.objects.filter(photo_thumb__gt=''): - person.photo_thumb = None - person.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0010_add_photo_fields'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/person/migrations/0012_auto_20160606_0823.py b/ietf/person/migrations/0012_auto_20160606_0823.py deleted file mode 100644 index 1c329e24d..000000000 --- a/ietf/person/migrations/0012_auto_20160606_0823.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import ietf.utils.storage - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0011_populate_photos'), - ] - - operations = [ - migrations.AlterField( - model_name='person', - name='biography', - field=models.TextField(help_text=b'Short biography for use on leadership pages. Use plain text or reStructuredText markup.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='photo', - field=models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photos', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='photo_thumb', - field=models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photos', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='biography', - field=models.TextField(help_text=b'Short biography for use on leadership pages. Use plain text or reStructuredText markup.', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='photo', - field=models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photos', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='photo_thumb', - field=models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photos', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/person/migrations/0013_add_plain_name_aliases.py b/ietf/person/migrations/0013_add_plain_name_aliases.py deleted file mode 100644 index 3dc8644fd..000000000 --- a/ietf/person/migrations/0013_add_plain_name_aliases.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -from ietf.person.name import name_parts - -def plain_name(self): - if '<>' in self.name: - return None - prefix, first, middle, last, suffix = name_parts(self.name) - if not first and last: - return None - if first.isupper(): - first = first.capitalize() - if last.isupper(): - last = last.capitalize() - return u" ".join([first, last]) - -def add_plain_name_aliases(apps, schema_editor): - Person = apps.get_model('person','Person') - Alias = apps.get_model('person','Alias') - print("") - for person in Person.objects.all(): - name = plain_name(person) - if name and not Alias.objects.filter(name=name): - print(u"Creating alias %-24s for %s" % (name, person.name)) - alias = Alias(name=name, person=person) - alias.save() - -def noop(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0012_auto_20160606_0823'), - ] - - operations = [ - migrations.RunPython(add_plain_name_aliases, noop), - ] diff --git a/ietf/person/migrations/0014_auto_20160613_0751.py b/ietf/person/migrations/0014_auto_20160613_0751.py deleted file mode 100644 index 954eaddc3..000000000 --- a/ietf/person/migrations/0014_auto_20160613_0751.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import ietf.utils.storage - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0013_add_plain_name_aliases'), - ] - - operations = [ - migrations.AlterField( - model_name='person', - name='photo', - field=models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photo', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='person', - name='photo_thumb', - field=models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photo', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='photo', - field=models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photo', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='personhistory', - name='photo_thumb', - field=models.ImageField(default=None, storage=ietf.utils.storage.NoLocationMigrationFileSystemStorage(location=None), upload_to=b'photo', blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/person/migrations/0015_clean_primary.py b/ietf/person/migrations/0015_clean_primary.py deleted file mode 100644 index 01c68bff7..000000000 --- a/ietf/person/migrations/0015_clean_primary.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-02-28 10:46 -from __future__ import unicode_literals - -from django.db import migrations -from collections import Counter - -import debug # pyflakes:ignore - -def repair_primary(apps, schema_editor): - Person = apps.get_model('person','Person') - Email = apps.get_model('person','Email') - for p in Person.objects.all(): - primary = p.email_set.filter(primary=True).first() - if primary and not primary.active: - #debug.show("['removing primary',primary.address,p.name]") - primary.primary = False - primary.save() - new_primary = p.email_set.filter(active=True).order_by("-time").first() - if new_primary: - #debug.show("['adding primary',new_primary.address,p.name]") - new_primary.primary = True - new_primary.save() - for p_id in [x[0] for x in Counter(Email.objects.filter(primary=True).values_list('person',flat=True)).items() if x[1]>1]: - for e in Email.objects.filter(person_id=p_id,primary=True)[1:]: - #debug.show("['removing extra primary', e.address, e.person.name]") - e.primary = False - e.save() - -def do_nothing(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0014_auto_20160613_0751'), - ] - - operations = [ - migrations.RunPython(repair_primary,do_nothing) - ] diff --git a/ietf/person/migrations/0016_add_email_addresses_from_rfc_editor.py b/ietf/person/migrations/0016_add_email_addresses_from_rfc_editor.py deleted file mode 100644 index 0b34483d5..000000000 --- a/ietf/person/migrations/0016_add_email_addresses_from_rfc_editor.py +++ /dev/null @@ -1,585 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-04-20 14:21 -from __future__ import unicode_literals - -from django.db import migrations - -new_addresses = { -'104-8456@mcimail.com': 3385, # John Linn -'a.ballardie@cs.ucl.ac.uk': 8269, # Anthony J. Ballardie -'a_bogdanov@iname.ru': 104669, # Alexander Bogdanov -'abbieb@nortel.com': 105441, # Abbie Barbir -'agriffin@cpcug.org': 16360, # James A. Griffin -'ah_smith@acm.org': 113171, # Andrew Smith -'ahawrylyshen@ditechnetworks.com': 106876, # Alan Hawrylyshen -'ajohnston@ipstation.com': 106289, # Alan Johnston -'ajs.ietf@gmail.com': 107364, # Aron J. Silverton -'akarp@cs.wisc.edu': 113268, # Anatoly Karp -'akoba@orange.plala.or.jp': 107496, # Atsushi Kobayashi -'akram.muhammadazam@gmail.com': 112989, # Azam Akram -'alain.baudot@francetelecom.com': 106719, # Alain Baudot -'alan@ivmg.net': 101241, # Alan Hannan -'alec.brusilovsky@alcatel-lucent.com': 101245, # Alec Brusilovsky -'alex.zinin@alcatel-lucent.com': 103264, # Alex D. Zinin -'alex@0--0.org': 103911, # Alexander Taler -'alexander.gall@switch.ch': 113278, # Alexander Gall -'alexander.steinmitz@telekom.de': 111504, # Alexander Steinmitz -'alexey@renatasystems.org': 114969, # Alexey Degtyarev -'allyn@mci.net': 4496, # Dr. Allyn Romanow -'amarine@atlas.arc.nasa.gov': 4356, # April Marine -'amir@montilio.com': 104972, # Amir Hermelin -'ana.kukec@enterprisearchitects.com': 107863, # Ana Kukec -'anant@isi.edu': 12133, # Anant Kumar -'anders.klemets@microsoft.com': 4489, # Anders Klemets -'andreas@sbin.se': 112458, # Andreas Petersson -'andrei.gurtov@teliasonera.com': 105728, # Andrei Gurtov -'antti.t.makela@iki.fi': 110136, # Antti Makela -'anuj.sehgal@navomi.com': 111956, # Anuj Sehgal -'athomson@lgscout.com': 107945, # Allan Thomson -'atkinson@itd.nrl.navy.mil': 6059, # Randall Atkinson -'azinin@nexsi.com': 103264, # Alex D. Zinin -'b.hoeneisen@ieee.org': 109505, # Bernie Hoeneisen -'balar@microsoft.com': 8354, # Dr. Bala Rajagopalan -'barnes@xylogics.com': 4848, # Jim Barnes -'barr@math.psu.edu': 18473, # David Barr -'barryf@google.com': 109799, # Barry Friedman -'bcain99@gmail.com': 113204, # Storigen Systems -'bchandle@gmail.com': 113421, # Ben Chandler -'bcn@lulea.trab.se': 19613, # Bjorn Nordgren -'bds@cisco.com': 3511, # Dr. Bruce S. Davie -'bernd.linowski.ext@nsn.com': 108731, # Bernd Linowski -'bgreenblatt@directory-applications.com': 20184, # Bruce Greenblatt -'billk@jti.com': 10543, # William Kwan -'bjewell@coppermountain.com': 100839, # Brian R. Jewell -'blaker@deming.com': 21446, # Blake C. Ramsdell -'bmanning@rice.edu': 4030, # Bill Manning -'bob.gilligan@acm.org': 2972, # Robert E. Gilligan -'bob.lynch@overturenetworks.com': 10161, # Bob Lynch -'bob@cqos.com': 113208, # Robert Mandeville -'bossert@corp.sgi.com': 15947, # Greg Bossert -'bparise@skyportsystems.com': 111993, # Bhavani Parise -'brad@cayman.com': 2865, # J. Bradford Parker -'brian.hibbard@tekelec.com': 110146, # Brian Hibbard -'brian@aero.org': 17603, # Brian Tung -'brisco@rutgers.edu': 5103, # Thomas P. Brisco -'bruce@seawaynetworks.com': 104563, # bruce Buffam -'brunner@netlab.nec.de': 104517, # Marcus Brunner -'bryan.ford@yale.edu': 106229, # Bryan Ford -'bsimpson@ray.lloyd.com': 5755, # William A. Simpson -'buglady@fuschia.net': 100013, # Aliza R. Panitz -'byf@cert.sei.cmu.edu': 3793, # Barbara Y. Fraser -'c.j.adie@edinburgh.ac.uk': 11660, # Chris Adie -'caitlin.bestler@neterion.com': 106162, # Caitlin Bestler -'callon@wellfleet.com': 2723, # Ross Callon -'carlisle.adams@entrust.com': 15836, # Dr. Carlisle Adams -'carlo.demichelis@tilab.com': 22965, # Carlo M. Demichelis -'carrel@ipsec.org': 6703, # David Carrel -'carrel@redback.net': 6703, # David Carrel -'carsten.burmeister@eu.panasonic.com': 104240, # Carsten Burmeister -'case@cs.utk.edu': 2331, # Dr. Jeff D. Case -'cbrown@wellfleet.com': 3321, # Caralyn Brown -'ccadar2@yahoo.com': 106570, # Cristian Cadar -'cdannewitz@googlemail.com': 111147, # Christian Dannewitz -'cedaoun@yahoo.fr': 105231, # Cedric Aoun -'charles.agboh@packetizer.com': 104514, # Charles Agboh -'charles.perkins@sun.com': 5133, # Charles E. Perkins -'charliekaufman@outlook.com': 107977, # Charlie Kaufman -'chimento@torrentnet.com': 4247, # Philip Chimento -'chip@technodyne.com': 107469, # Chip Popoviciu -'christophe.kalt@gmail.com': 103821, # Christophe Kalt -'cjw@magnolia.stanford.edu': 3458, # Cathy Wittbrodt -'clifford.lynch@ucop.edu': 1913, # Dr. Clifford A. Lynch -'clive@davros.org': 21288, # Clive Feather -'clw@merit.edu': 3428, # Chris Weider -'cohen@myricom.com': 184, # Dr. Danny Cohen -'colella@nist.gov': 2738, # Richard P. Colella -'craig.schelp@oracle.com': 120896, # Craig Schelp -'cromwell@nortelnetworks.com': 102270, # David Cromwell -'csapuntz@alum.mit.edu': 113267, # Constantine Sapuntzakis -'cschmec@eng.sun.com': 20582, # Christopher A. Schmechel -'d.spinellis@senanet.com': 19820, # Diomidis Spinellis -'d20@icosahedron.org': 113286, # Jay Kint -'dab@bsdi.com': 2701, # David A. Borman -'dab@cray.com': 2701, # David A. Borman -'dahoss@earthlink.net': 8860, # Albin Warth -'dan@redback.net': 102133, # Dan Simone -'danbailey@sth.rub.de': 111415, # Daniel Bailey -'daniel@iogearbox.net': 116458, # Daniel Borkmann -'daniel@isi.edu': 10804, # Daniel M.A. Zappala -'danmcd@opensolaris.org': 109859, # Daniel McDonald -'danzig@caldera.usc.edu': 6596, # Dr. Peter B. Danzig -'dap@cnt.com': 110869, # David Peterson -'dave.garcia@stanfordalumni.org': 105567, # Dave Garcia -'dave@mail.bellcore.com': 2775, # David M. Piscitello -'david.walker@sedna-wireless.com': 23178, # Dave R. Walker -'david_chuang@cosinecom.com': 100840, # David Chuang -'david_grabelsky@commworks.com': 101539, # David Grabelsky -'david_zelig@pmc-sierra.com': 105293, # David Zelig -'davidmiles@google.com': 109177, # David Miles -'dbrownell@sun.com': 19501, # David Brownell -'dck2@mail.bellcore.com': 4763, # Deirdre C. Kostick -'ddc@lcs.mit.edu': 182, # Dr. David D. Clark -'dee@lkg.dec.com': 102391, # Donald E. Eastlake 3rd -'deleganes@yahoo.com': 113377, # Ellen Deleganes -'demizu@dd.iij4u.or.jp': 9010, # Noritoshi Demizu -'dennis@juniper.com': 2766, # Dennis Ferguson -'derhwagan@yahoo.com': 2364, # Der-Hwa Gan -'dfrancis@cisco.com': 19633, # Dale Francisco -'dgilletti@yahoo.com': 104722, # Don Gilletti -'dharkins@cisco.com': 19647, # Dan Harkins -'dhs@magna.telco.com': 13872, # Doug Schremp -'dkuenzi@724.com': 103656, # Diego Kuenzi -'dlr@daver.bungi.com': 10790, # David Rand -'dmwalln@orion.ncsc.mil': 23257, # Debby M. Wallner -'dondeti@qualcomm.com': 105234, # Lakshminath R. Dondeti -'donglg@zjgsu.edu.cn': 107151, # Ligang Dong -'doug.tygar@gmail.com': 21276, # Professor Doug Tygar -'dplore@gmail.com': 107267, # Darren Loher -'dpz@dimacs.rutgers.edu': 2503, # David Paul Zimmerman -'dross@microsoft.com': 113489, # David Ross -'drummond@ieee.org': 13333, # Walt F. Drummond III -'ds-rfc@ogud.com': 3760, # Ólafur Guðmundsson -'dskim@jejutp.or.kr': 112636, # Dae-Sun Kim -'duncan.missimer@ieee.org': 104904, # Duncan Missimer -'e-krol@uiuc.edu': 304, # Edward M. Krol -'edd@acm.org': 20577, # Edgar Der-Danieliantz -'edixon@myrealbox.com': 105192, # Eric Dixon -'eellesson@lboard.com': 10585, # Ed J. Ellesson -'elb@interruptsciences.com': 104783, # Ethan Blanton -'elbell@ntlworld.com': 101385, # Les Bell -'elevinson@accurate.com': 8098, # Dr. Ed Levinson -'email2mre-rfc4506@yahoo.com': 20436, # Mike Eisler -'engan@effnet.com': 19605, # Mathias Engan -'enke@redback.com': 8348, # Enke Chen -'epg@gateway.mitre.org': 2784, # Ella P. Gardner -'epg@merit.edu': 2366, # Elise P. Gerich -'eric.mannie@perceval.net': 18669, # Eric Mannie -'eric_zimmerer@yahoo.com': 103617, # Eric Zimmerer -'ericlklein.ipv6@gmail.com': 113403, # Eric Klein -'erik.nordmark@oracle.com': 8243, # Erik Nordmark -'erik@spybeam.org': 16916, # Erik Guttman -'estrin@isi.edu': 209, # Dr. Deborah Estrin -'eva.leppanen@saunalaht.fi': 106161, # Eva Leppanen -'eva.weilandt@temic.com': 105029, # Dr. Eva Weilandt -'fair@apple.com': 2965, # Erik E. Fair -'faisal.mir@gmail.com': 112353, # Faisal Mir -'fanzhao@google.com': 106304, # Fan Zhao -'fbaker@acc.com': 2853, # Fred Baker -'feinstein@acm.org': 105027, # Benjamin Feinstein -'fenner@arista.com': 13108, # Bill Fenner -'fgalligan@google.com': 112761, # Frank Galligan -'fink@es.net': 5112, # Bill Fink -'florent.ftrd@gmail.com': 106226, # Florent Bersani -'fowler@syndesis.com': 16503, # Dave Fowler -'francis@cactus.ntt.jp': 105085, # Paul Francis -'frank.derks@nec-philips.com': 113354, # Frank Derks -'frank@bbn.com': 2706, # Frank Kastenholz -'frank@savecore.net': 103312, # Frank Cusack -'g+ietf@qualcomm.com': 18621, # Randall Gellens -'galperin@mycfo.com': 101361, # Slava Galperin -'gamunson@gmail.com': 112476, # Gary Munson -'gaoming@mail.zjgsu.edu.cn': 112296, # Ming Gao -'gary.goncher@tek.com': 104537, # Gary Goncher -'gary.tomlinson@cacheflow.com': 22809, # Gary Tomlinson -'gary@tomlinsongroup.net': 22809, # Gary Tomlinson -'gary_hanson@adc.com': 102087, # Gary Hanson -'gduan@us.oracle.com': 101422, # Gang Duan -'geertjan.degroot@bsdi.com': 2912, # Geert Jan de Groot -'gene@alertlogic.net': 106118, # Eugene Golovinsky -'geoff-s@panix.com': 106919, # Geoffrey Sisson -'ghyslain.pelletier@epl.ericsson.se': 105047, # Ghyslain Pelletier -'gja@dnrc.bell-labs.com': 8704, # Dr. Grenville Armitage -'glenn.mcgregor@merit.edu': 4416, # Glenn McGregor -'glenn@lloyd.com': 4416, # Glenn McGregor -'gmgross@securemulticast.net': 21773, # George Gross -'gmj3871@pobox.com': 6163, # George M. Jones -'gojomo@usa.net': 101035, # Gordon Mohr -'gsadasiv@rohati.com': 105681, # Ganesh Sadasivan -'gvm@att.com': 10019, # George V. Mouradian -'gyakushev@yahoo.com': 115367, # Gregory Yakushev -'hagens@ans.net': 2372, # Robert Hagens -'hank@vm.tau.ac.il': 5000, # Hank H. Nussbacher -'harald.alvestrand@delab.sintef.no': 5778, # Harald T. Alvestrand -'harald.t.alvestrand@delab.sintef.no': 5778, # Harald T. Alvestrand -'harald.t.alvestrand@uninett.no': 5778, # Harald T. Alvestrand -'hardie@equinix.com': 110721, # Ted Hardie -'has@google.com': 112938, # Heather Schiller -'heejin.jang@gmail.com': 106489, # Hee-Jin Jang -'hemma@cp.net': 18516, # Hemma Prafullchandra -'henk@procket.com': 20261, # Henk Smit -'henk@ripe.net': 100603, # Dr. Henk A.J Uijterwaal -'henry@zoo.utoronto.ca': 101423, # Henry Spencer -'herve.debar@orange-ftgroup.com': 113249, # Herve Debar -'herzog@policyconsulting.com': 13374, # Shai Herzog -'hiashida@cisco.com': 109182, # Hiroyuki Ashida -'hidetoshi.yokota@landisgyr.com': 19709, # Hidetoshi Yokota -'hirokazu.ishimatsu@g1m.jp': 104846, # Hirokazu Ishimatsu -'ho@darpa.mil': 9645, # Hilarie Orman -'holbrook@arista.com': 104288, # Hugh Holbrook -'howes@loudcloud.com': 4502, # Tim Howes -'hprafullchandra@hytrust.com': 18516, # Hemma Prafullchandra -'huangfuqing@huawei.com': 109710, # Fortune Huang -'hugokraw@us.ibm.com': 15913, # Dr. Hugo Krawczyk -'huston@franklin.ro': 113288, # Huston Franklin -'huub@van-helvoort.eu': 109312, # Huub van Helvoort -'hvivek@cisco.com': 101626, # Silvano Gai -'icemilk77@yahoo.co.jp': 113254, # Chie Kanaide -'icheol.lee@samsung.com': 107093, # Jicheol Lee -'idickins@fore.co.uk': 17469, # Ian Dickinson -'ietf-wd@v6security.com': 102247, # William Dixon -'ietf@kalbfleisch.us': 19264, # Carl W. Kalbfleisch -'ietf@mah.priv.at': 14971, # Michael Haberler -'ietfdbh@gmail.com': 17253, # David Harrington -'imap+sort+thread@lingling.panda.com': 3346, # Mark Crispin -'irene.grosclaude@orange.com': 111158, # Irene Grosclaude -'j_mandin@yahoo.com': 107354, # Jeff Mandin -'jakob@nic.se': 105400, # Jacob Schlyter -'james@bovik.org': 100793, # James Salsman -'jan@flyingcloggies.nl': 104833, # Jan Meijer -'jcucchiara@mindspring.com': 18180, # Joan Cucchiara -'jdrandall@comcast.net': 107972, # James Randall -'jdrosen.net': 2250, # Jonathan Rosenberg -'jebooth@cisco.com': 101835, # Skip Booth -'jeffp@middlebury.edu': 102261, # Jeff Parker -'jelson@cs.ucla.edu': 103980, # Jeremy Elson -'jesse@intonet.com': 102934, # Jesse R. Vincent -'jferrai@us.ibm.com': 113424, # Jon Ferraiolo -'jfmule@apple.com': 103612, # Jean-Francois Mule -'jhaas@nexthop.com': 105046, # Jeffrey Haas -'jhawk@bbnplanet.com': 16966, # John A. Hawkinson -'jheitz@lucent.com': 103462, # Jacob Heitz -'jhodges@oblix.com': 110898, # Jeff Hodges -'jineshd@juniper.net': 113028, # University of Colorado -'jjiang@syndesis.com': 113312, # Jianping Jiang -'jjp@bscs.com': 10822, # Jon J. Penner -'jlhufferd@comcast.net': 105666, # John L. Hufferd -'joan@ironbridgenetworks.com': 18180, # Joan Cucchiara -'johanietf@gmail.com': 109064, # Johan Rydell -'john.e.drake2@boeing.com': 111354, # John Drake -'john.pawling@wang.com': 22831, # John Pawling -'john3725@world.std.com': 19586, # Dr. Jonathan Trostle -'jon.harrison@metaswitch.com': 106778, # Jon Harrison -'jonathan.green@queensu.ca': 110115, # Jon Green -'jorge.gato@vodafone.com': 104716, # Jorge Gato -'jose.rey@eu.panasonic.com': 106074, # Jose Rey -'jrd@ptt.lcs.mit.edu': 2345, # James R. Davin -'jrv@mtghouse.com': 2856, # John Vollbrecht -'jssteven@us.ibm.com': 101016, # Jeffrey S. Stevens -'jtkohl@zk3.dec.com': 4837, # Theodore Ts'o -'julianchesterfield@cantab.net': 105079, # Julian Chesterfield -'julien.bournelle@orange.com': 106682, # Julien Bournelle -'jyanacek@ctron.com': 102879, # Judy Yanacek -'jyy@cosinecom.com': 3438, # Jessica Yu -'jyy@merit.edu': 3438, # Jessica Yu -'jzwiebel@cruzio.com': 12543, # John Zwiebel -'kaj@bellcore.com': 3798, # Kaj Tesink -'kaj@cc.bellcore.com': 3798, # Kaj Tesink -'kannan@isi.edu': 2830, # Kannan Varadhan -'kannan@oar.net': 2830, # Kannan Varadhan -'kasten@ftp.com': 2706, # Frank Kastenholz -'katsnelson6@peoplepc.com': 113236, # Alexander Katsnelson -'kbe@craycom.dk': 11621, # Kjeld Borch Egevang -'kdegraaf@isd.3com.com': 16911, # Kathryn de Graaf -'kent@trl.ibm.co.jp': 103130, # Kent Tamura -'kepeng.likp@gmail.com': 111131, # Kepeng Li -'kevin.e.jordan@mercury.oss.arh.cpg.cdc.com': 4420, # Kevin E. Jordan -'kfrisa@fore.com': 2777, # Karen Frisa -'kh274@cornell.edu': 18326, # Kaynam Hedayat -'klaus.wehrle@uni-tuebingen.de': 103885, # Klaus Wehrle -'klensin@nsrc.org': 106911, # Dr. John C. Klensin -'knabe@ad.cyberhome.ne.jp': 20113, # Ken Watanabe -'knichols@ieee.org': 9833, # Dr. Kathleen M. Nichols -'kobara_conf@m.aist.go.jp': 112488, # Kazukuni Kobara -'kocke@crt.xerox.com': 104324, # Kirk Ocke -'kodonog@relay.nswc.navy.mil': 4857, # Karen O'Donoghue -'krehbehn@megisto.com': 4715, # Kenneth J. Rehbehn -'krister.svanbro@ericsson.com': 103798, # Krister Svanbro -'ksmith@ascend.com': 19416, # Kevin Smith -'kuthan@fokus.fhg.de': 113276, # Jiri Kuthan -'kzm@hls.com': 2731, # Keith McCloghrie -'ladislav@lhotka.name': 107983, # Ladislav Lhotka -'lars-erik.jonsson@ericsson.com': 103797, # Lars-Erik Jonsson -'laurent.goix@econocom-osiatis.com': 113067, # Laurent Walter Goix -'leaf.y.yeh@hotmail.com': 114014, # Leaf Yeh -'leiner@nsipo.nasa.gov': 315, # Dr. Barry M. Leiner -'llavu@bacon.gmu.edu': 20716, # Lava K. Lavu -'loureiro@neclab.eu': 108663, # Paulo Loureiro -'luc.beloeil@orange.com': 106013, # Luc Beloeil -'m.saarinen@qub.ac.uk': 118829, # Markku-Juhani O. Saarinen -'mab@crypto.com': 21317, # Dr. Matt Blaze -'mail@frankwmiller.net': 105814, # Frank w. Miller -'mak@merit.edu': 2983, # Mark Knopper -'malis@maelstrom.timeplex.com': 3844, # Andrew G. Malis -'mallen@hq.walldata.com': 10701, # Michael O. Allen -'mankin@east.isi.edu': 2515, # Allison J. Mankin -'manoel.rodrigues@att.com': 3456, # Dr. Manoel A. Rodrigues -'marc@cygnus.com': 6391, # Steven J. Lunt -'marco.carugi@nortel.com': 20871, # Marco Carugi -'marijke.kaat@surfnet.nl': 12243, # Dr. Marijke Kaat -'mark.wahl@sun.com': 19108, # Mark Wahl -'markdavis@google.com': 101920, # Mark Davis -'mathur@telebit.com': 10764, # Saroop Mathur -'matt@sergeant.org': 109034, # Matt Sergeant -'matthias-philipp@gmx.de': 112556, # Matthias Philipp -'mattias@uchicago.edu<': 121182, # Mattias Lidman -'mattjf@umd.edu': 107394, # M Fanto -'mattsquire@acm.org': 106447, # Matt Squire -'mbaugher@passedge.com': 12017, # Mark Baugher -'mbeadles@endforce.com': 21400, # Mark A. Beadles -'mcampagna@gmail.com': 110599, # Matthew Campagna -'mcbride@cisco.com': 105708, # Mike McBride -'mccanne@cs.berkeley.edu': 18316, # Steven McCanne -'mcmaster@synoptics.com': 4029, # Donna McMaster -'md.1@newtbt.com': 104210, # Michael Dolan -'meconn26@gmail.com': 118267, # Michael Conn -'merlin.hughes@betrusted.com': 106125, # Merlin Hughes -'mhadley@mitre.org': 111239, # Marc Hadley -'mhausenblas@maprtech.com': 112502, # Michael Hausenblas -'michael.daniele@syamsoftware.com': 113252, # Mike Daniele -'michael.larsen@tieto.com': 106852, # Michael Larsen -'michael.tuexen@siemens.com': 104695, # Michael Tüxen -'michaelglover262@gmail.com': 112759, # Michael Glover -'micke@sm.luth.se': 18236, # Mikael Degermark -'mike.bursell@intel.com': 112817, # Mike Bursell -'mike@belshe.com': 113150, # Mike Belshe -'mike_borella@commworks.com': 101538, # Michael Borella -'milan.patel@huawei.com': 111064, # Milan Patel -'mimu@miyabi-labo.net': 113256, # Katsuhiko Mimura -'minshall@wc.novell.com': 2740, # Greg Minshall -'miyazaki.akihiro@jp.panasonic.com': 23054, # Akihiro Miyazaki -'mlasserre@alcatel-lucent.com': 105300, # Marc Lasserre -'mo@uunet.uu.net': 4817, # Michael D. O'Dell -'mohamad.badra@zu.ac.ae': 106750, # Mohamad Badra -'mohamed.khalil@ericsson.com': 108198, # Mohamed Khalil -'motonori@media.kyoto-u.ac.jp': 9198, # Motonori Nakamura -'mpvecchi@twcable.com': 4386, # Mario P. Vecchi -'mreyes@ac.upc.edu': 106104, # Angelica Reyes -'mstjohns@comcast.net': 106741, # Michael StJohns -'mwritter@applelink.apple.com': 4785, # Dr. Mike Ritter -'mxa@mail.bellcore.com': 8761, # Dr. Masuma Ahmed -'mythicalkevin@yahoo.com': 109225, # Kevin Igoe -'naiming@siara.com': 20076, # Naiming Shen -'nair_raj@yahoo.com': 4513, # Raj Nair -'nas@fu-berlin.de': 104152, # Philipp Grau -'nathan@millpark.com': 105467, # Nathan Charlton -'nevil@caida.org': 6766, # Nevil Brownlee -'niels@macfergus.com': 113337, # Niels Ferguson -'ningso@vinci-systems.com': 109626, # So Ning -'nir.ietf@gmail.com': 106745, # Yoav Nir -'npopp@verisign.com': 102231, # Nicolas Popp -'nsb@bellcore.com': 3651, # Dr. Nathaniel S. Borenstein -'ogashiwa@wide.ad.jp': 107140, # Nobuo Ogashiwa -'ogud@tislabs.com': 3760, # Ólafur Guðmundsson -'orange@spiritone.com': 20012, # Dr. Carol Orange -'orly_n@rad.co.il': 108494, # Orly Nicklass -'oshihiro.ohba@toshiba.co.jp': 106636, # Yoshihiro Ohba -'padhye@aciri.org': 103949, # Jitendra Padhye -'padma.krishnaswamy@saic.com': 7822, # Padma Krishnaswamy -'paf@nada.kth.se': 11182, # Patrik Fältström -'pashalidis@nw.neclab.eu': 107180, # Andreas Pashalidis -'patrick.masotta.ietf@vercot.com': 113507, # Patrick Masotta -'patrick.mourot@alcatel.fr': 111332, # Patrick Mourot -'paul@alantec.com': 4711, # Paul Ziemba -'paul@bayleaf.org.uk': 21801, # Paul Overell -'paul_95014@yahoo.com': 105232, # Paul Joseph -'pauljleach@msn.com': 14634, # Paul J. Leach -'perrig@cmu.edu': 104909, # Adrian Perrig -'pete@surfaceeffect.com': 113192, # Peter Bagnall -'peter.hartmann@it-sec.com': 103655, # Peter Hartmann -'peter.monaco@nuasis.com': 113319, # Peter Monaco -'pgross@ans.net': 2791, # Phillip G. Gross -'phil.m.williams@bt.com': 112831, # Philip M. Williams -'philippe.niger@orange.com': 109360, # Philippe Niger -'philrz@yahoo.com': 104857, # Phillip Rzewski -'pirey@relay.nswc.navy.mil': 10154, # Phil Irey -'pstimme@nsa.gov': 112679, # Paul Timmel -'publications@gigabeam.com': 107569, # Alan Corry -'rabie@nortel.com': 106384, # Sameh Rabie -'raj@eng.sun.com': 10754, # Raj Srinivasan -'rajesh.balay@cosinecom.com': 22820, # Rajesh I. Balay -'randy@mv.unisys.com': 18621, # Randall Gellens -'randy@nsrc.org': 5234, # Randy Bush -'rayhan@ee.ryerson.ca': 103788, # Abdallah Rayhan -'rbergma@dpc.com': 21837, # Ron Bergman -'rcoltun@ni.umd.edu': 2340, # Rob Coltun -'rcoltun@rainbow-bridge.com': 2340, # Rob Coltun -'rcoltun@siara.com': 2340, # Rob Coltun -'rcq@boxnarrow.com': 19097, # Bob Quinn -'rdantu@netrake.com': 102323, # Ram Dantu -'rdasilva@va.rr.com': 101526, # Ron da Silva -'remoore@ralvm6.vnet.ibm.com': 18205, # Dr. Robert C. Moore -'rfc4217@ford-hutchinson.com': 21156, # Paul Ford-Hutchinson -'rfox@synoptics.com': 2360, # Richard Fox -'rherriot@pahv.xerox.com': 15033, # Robert G. Herriot -'rhys.smith@jisc.ac.uk': 112289, # Rhys Smith -'richard.tse@microsemi.com': 114353, # Richard Tse -'richardstastny@gmail.com': 105862, # Richard Stastny -'rjc@cc.gatech.edu': 9549, # Russ Clark -'rkoodli@starentnetworks.com[': 101214, # Rajeev Koodli -'rlsmith@nb.ppd.ti.com': 14566, # Ronald L. Smith -'rlstewart@eng.xyplex.com': 2905, # Bob Stewart -'rmegginson0224@aol.com': 104943, # Rich Megginson -'robert.sparks@tekelec.com': 103961, # Robert Sparks -'robert.steinberger@fnc.fujitsu.com': 101196, # Robert A. Steinberger -'robs@join.com': 15883, # Rick L. Stevens -'rogeralexander@eaton.com': 109895, # Roger Alexander -'rohan@airespace.com': 104491, # Rohan Mahy -'rolf.hakenberg@eu.panasonic.com': 104239, # Rolf Hakenberg -'ronf@bluecoat.com': 8677, # Ron Frederick -'rsa-labs@rsa.com': 19822, # Ronald L. Rivest -'rsanjay@nortelnetworks.com': 104815, # Sira P. Rao -'rscott@us.axway.com': 2140, # Richard C. Scott -'rsofia@zmail.pt': 113355, # Rute Sofia -'rstory@ipsp.revelstone.com': 112321, # Robert Story -'rtroll@corp.home.net': 22867, # Ryan Troll -'rubbersoul3@yahoo.com': 113237, # Stuart M. Green -'russ.white@vce.com': 104645, # Russ White -'russerts@hotmail.com': 15057, # Steven Russert -'rwoundy@broadband.att.com': 2690, # Richard Woundy -'rwshirey4949@verizon.net': 113389, # Robert W. Shirey -'s-dorner@uiuc.edu': 16250, # Steve Dorner -'sabaset@us.ibm.com': 107389, # Salman Baset -'saperia@enet.dec.com': 2809, # Jon Saperia -'saperia@mediaone.net': 2809, # Jon Saperia -'saperia@tay.dec.com': 2809, # Jon Saperia -'saperia@zko.dec.com': 2809, # Jon Saperia -'sar@iwl.com': 9791, # Shawn A. Routhier -'sassan.ahmadi@ieee.org': 106434, # Sassan Ahmadi -'saverio.niccolini@.neclab.eu': 106463, # Saverio Niccolini -'sbardalai@gmail.com': 108895, # Snigdho Bardalai -'sblakewilson@safenet-inc.com': 104696, # Simon Blake-Wilson -'sc@corp.sgi.com': 17266, # Simon P. Cooper -'schmitzjo@aol.com': 18498, # Dr. Joachim Schmitz -'sdas@ececs.uc.edu': 113195, # Samir R. Das -'sdawson@eecs.umich.edu': 20580, # Mark Allman -'sds@hill.com': 13516, # Steven D. Shepard -'sdshew@nortel.com': 4481, # Stephen Shew -'seanol@microsoft.com': 104771, # Sean Olson -'selvam@trideaworks.com': 102592, # Selvam Rengasami -'sharkey@zoic.org': 106030, # Nick Moore -'shep@alum.mit.edu': 20923, # Dr. Timothy J. Shepard -'siddharthietf@gmail.com': 109500, # Siddharth Bajaj -'silvano@ip6.com': 101626, # Silvano Gai -'sjero@purdue.edu': 114063, # Samuel Jero -'sjs@network.com': 2811, # Steve Senum -'skhurana@motorola.com': 104599, # Sumit Khurana -'smansour@ebay.com': 22880, # Steve Mansour -'smccann@blackberry.com': 110719, # Stephen McCann -'snix@metaplex.com': 10713, # Shannon D. Nix -'sra@epilogue.com': 104212, # Rob Austein -'sri@qsun.att.com': 8225, # Dr. Srinivas R. Sataluri -'srivatsa.srinivasan@gmail.com': 108467, # Srivatsa Srinivasan -'sshaffer@bridgeport-networks.com': 105921, # Scott Shaffer -'stan@netsmiths.com': 8934, # Stanley P. Hanks -'stefanforsgren@alvishagglunds.se': 105266, # Stefan Forsgren -'stephan.teiwes@it-sec.com': 103654, # Stephen Teiwes -'stephen@mchenry.net': 105044, # Stephen McHenry -'steqve@shore.net': 104230, # SteQven Christey -'stev@ftp.com': 9122, # Stev Knowles -'steve.gonczi@networkengines.com': 102188, # Steve Gonczi -'steve.hanna@infineon.com': 15448, # Stephen R. Hanna -'steve@sm.luth.se': 4966, # Stephen Pink -'stevea@lachman.com': 3850, # Steve Alexander -'stevef@nasuni.com': 107116, # Stephen Fridella -'stevej@netmanage.com': 15074, # Steven J. Jackowski -'stjohns@darpa.mil': 106741, # Michael StJohns -'stokese@us.ibm.com': 21456, # Ellen Stokes -'sundell@nortelnetworks.com': 19643, # Kenneth Sundell -'sung1.lee@samsung.com': 106487, # Sung-Hyuck Lee -'susan.joseph@vdtg.com': 113369, # Susan Joseph -'suyong@ist.osaka-u.ac.jp': 114932, # Suyong Eum -'swol@andrew.cmu.edu': 2689, # Steven Waldbusser -'szander@swin.edu.au': 104609, # Sebastian Zander -'szilles@mv.us.adobe.com': 9668, # Steve N. Zilles -'tacox@mail.bellcore.com': 3345, # Tracy A. Brown -'tata_kalyan@yahoo.com': 106326, # Kalyan Tata -'tbdean@qinetiq.com': 15520, # Tim Dean -'tedgavin@newsguy.com': 103935, # Edward Gavin -'terzis@cs.jhu.edu': 20892, # Andreas Terzis -'tgeorge_tx@verizon.net': 104129, # Tom George -'thomas.froment@tech-invite.com': 107475, # Thomas Froment -'thomas.johannsen@ifn.et.tu-dresden.de': 8758, # Thomas Johannsen -'thomas.nadeau@huawei.com': 104197, # Thomas Nadeau -'thomwu@cisco.com': 23231, # Thomas Wu -'timbl@info.cern.ch': 6861, # Tim Berners-Lee -'timm@rainwillow.com': 102640, # Tim J. Melanchuk -'tli@tropos.com': 4475, # Dr. Tony Li -'tmtalpey@gmail.com': 8209, # Tom Talpey -'tom.hastings@alum.mit.edu': 14890, # Thomas N. Hastings -'tom.worster@motorola.com': 100623, # Tom Worster -'ton.verschuren@surfnet.nl': 8122, # Dr. Ton Verschuren -'toni.paila@gmail.com': 105787, # Toni Paila -'tony+msgtrk@maillennium.att.com': 6771, # Tony Hansen -'topolcic@cnri.reston.va.us': 2828, # Claudio M. Topolcic -'tzetatsao@eaton.com': 111179, # Tzeta Tsao -'uhhyung@kaist.ac.kr': 5295, # Uhhyung Choi -'ulrich.drafz@telekom.de': 108873, # Ulrich Drafz -'urimobile@optonline.net': 8774, # Uri Blumenthal -'v.goyal@ieee.org': 17589, # Vivek Goyal -'vaf@stanford.edu': 2362, # Vince Fuller -'vaf@valinor.stanford.edu': 2362, # Vince Fuller -'vesa.torvinen@turkuamk.fi': 105361, # Vesa Torvinen -'viega@list.org': 107111, # John Viega -'vishwas@sinett.com': 105627, # Vishwas Manral -'vrangan@brocade.com': 5746, # Venkat D. Rangan -'vsriniva@cosinecom.com': 19073, # Dr. Vijay Srinivasan -'waldbusser@andrew.cmu.edu': 2689, # Steven Waldbusser -'waldbusser@cmu.edu': 2689, # Steven Waldbusser -'waldbusser@ins.com': 2689, # Steven Waldbusser -'waldemar@wdmsys.com': 105191, # Waldemar Augustyn -'walter.wimer@cmu.edu': 2835, # Walter Wimer -'walterweiss@attbi.com': 100760, # Walter Weiss -'wclark@cisco.com': 10720, # Wayne C. Clark -'wel@bellcore.com': 19079, # Will E. Leland -'wfms@ottix.net': 107646, # William F. Maton -'willy@haproxy.com': 113096, # Willy Tarreau -'wk04464@worldlink.com': 2775, # David M. Piscitello -'wnicolls@forsythesolutions.com': 102991, # Weston Nicolls -'wray@tuxedo.enet.dec.com': 9240, # John Wray -'wsawyer@ieee.org': 8267, # Wilson Sawyer -'xipeng@gblx.net': 103866, # X Xiao -'yangwooko@gmail.com': 107280, # YangWoo Ko -'ybernet@msn.com': 20296, # Yoram Bernet -'yeongw@psilink.com': 4155, # Wengyik Yeong -'yidarlo@yahoo.com': 102351, # Jeffrey Lo -'ying.zhang13@hp.com': 108726, # Ying Zhang -'yoshida@peta.arch.ecl.net': 20814, # Toshiaki Yoshida -'young@netntv.co.kr': 19477, # Yuen Lim -'yulindong@gmail.com': 113223, # Yulin Dong -'zbig@eicon.qc.ca': 6860, # Zbigniew Kielczewski -'zhiwlin@nyct.com': 104865, # Zhi Lin -'zhouweiisu@gmail.com': 114358, # Wei Zhou -'zsatou@t-ns.co.jp': 104489, # T Satoh -} - - -def forward(apps,schema_editor): - - Email=apps.get_model('person','Email') - - # Sanity check - for addr in new_addresses.keys(): - if Email.objects.filter(address__iexact=addr).exists(): - raise Exception("%s already exists in the Email table"%addr) - - for addr in new_addresses.keys(): - Email.objects.create(address=addr,person_id=new_addresses[addr],active=False,primary=False) - -def reverse(apps,schema_editor): - Email=apps.get_model('person','Email') - #Person=apps.get_model('person','Person') - #print "new_addresses = {" - #for addr in sorted(new_addresses.keys()): - # print "'%s': %s, # %s"%(addr,new_addresses[addr],Person.objects.get(pk=new_addresses[addr]).name) - #print "}" - Email.objects.filter(address__in=new_addresses.keys()).delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0015_clean_primary'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/person/migrations/0017_add_email_address_from_parsed_rfcs.py b/ietf/person/migrations/0017_add_email_address_from_parsed_rfcs.py deleted file mode 100644 index a55fe6c8b..000000000 --- a/ietf/person/migrations/0017_add_email_address_from_parsed_rfcs.py +++ /dev/null @@ -1,193 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-04-20 14:21 -from __future__ import unicode_literals - -from django.db import migrations - -new_addresses = { -'alan@routingloop.com': 101241, # Alan Hannan (3210) -'anup@netscape.com': 20575, # Anup Rao (2326) -'arnoud.van.wijk@eln.ericsson.se': 104823, # Arnoud Van Wijk (3351) -'arun@force10networks.com': 18356, # Arun Viswanathan (3031) -'bathricg@agcs.com': 113217, # Gregory Bathrick (2662) -'bill.strahm@intel.com': 21575, # Bill Strahm (2959) -'brettk@invidi.com': 105169, # Brett Kosinski (3520) -'brunner@engage.com': 105394, # Eric Brunner-Williams (2929) -'bt0008@sbc.com': 21716, # Brian Thomas (2693) -'bygg@sunet.se': 4119, # Johnny Eriksson (1926) -'c.yin.lee@gmail.com': 101468, # Cheng-Yin Lee (4874) -'carl@malamud.com': 3752, # Carl Malamud (1486) -'carle@fokus.fhg.de': 10891, # Georg Carle (3334) -'cerf@nri.reston.va.us': 119894, # Vint Cerf (1217) -'cerpa@cs.ucla.edu': 103967, # Alberto Cerpa (3507) -'charle@microsoft.com': 104665, # Charles Eliot (3458) -'charley@catarina.usc.edu': 16783, # Ching-Gung Liu (2362) -'cheng@ralvm6.vnet.ibm.com': 10783, # Jia-bing R. Cheng (1593) -'chihschung@aol.com': 16951, # Chris Chung (2417) -'chiu@research.att.com': 105201, # Angela Chiu (4054) -'christian.huitema@sophia.inria.fr': 3147, # Christian Huitema (1601) -'cperkins@sun.com': 5133, # Charles E. Perkins (2609) -'craig.a.finseth-1@umn.edu': 1179, # Craig A. Finseth (1439) -'dafna_sheinwald@il.ibm.com': 105179, # Dafna Sheinwald (3385) -'dcooper@gblx.net': 105259, # Dave Cooper (3346) -'ddp@andrew.cmu.edu': 8371, # Drew D. Perkins (1171) -'degustafson@comcast.net': 104900, # Dale Gustafson (3760) -'dixon@rare.nl': 6234, # Tim Dixon (1454) -'dkatz@merit.edu': 2399, # Dave Katz (1188) -'dpendarakis@tellium.com': 21753, # Dimitrios Pendarakis (3474) -'droid@cray.com': 4031, # Andy Nicholson (1306) -'dromasca@madge.com': 6699, # Dan Romascanu (2239) -'ed_campbell@3com.com': 103297, # Ed Campbell (2989) -'edc@explosive.net': 104147, # Edward Crabbe (2873) -'efri@xiv.co.il': 104188, # Efri Zeidner (3720) -'eitan@xacct.com': 105227, # Eitan Elkin (3423) -'erik.nordmark@eng.sun.com': 8243, # Erik Nordmark (1933) -'ewgray@mindspring.com': 107729, # Eric Gray (3037) -'faye@pedestalnetworks.com': 14632, # Faye Ly (3606) -'fmaino@andiamo.com': 108983, # Fabio Maino (3826) -'fong@fore.com': 8193, # Fong-Ching Liaw (1755) -'freier@apple.com': 15102, # Alan O. Freier (1301) -'frystyk@microsoft.com': 17546, # Henrik Frystyk Nielsen (2774) -'fu.xihua@stairnote.com': 109932, # Xihua Fu (7698) -'fukunaga444@oki.com': 104553, # Shigeru Fukunaga (4586) -'g.michaelson@cc.uq.oz.au': 17141, # George G. Michaelson (1562) -'geoff.huston@aarnet.edu.au': 106925, # Geoff Huston (1744) -'ginoza@isi.edu': 104401, # Sandy Ginoza (2699) -'gregside@nortelnetworks.com': 102749, # Greg Sidebottom (3057) -'gvaudre@cnri.reston.va.us': 2485, # Greg Vaudreuil (1428) -'gwright@nortelnetworks.com': 102149, # Gregory Wright (3213) -'hans.hannu@ericsson.com': 103796, # Hans Hannu (3095) -'hinden@bbn.com': 2793, # Robert M. Hinden (1264) -'hlin@research.telcordia.com': 103764, # Haui-an Paul Lin (2719) -'hoffman@isi.edu': 11612, # Eric Hoffman (1755) -'hotz@usc.edu': 4815, # Steven Hotz (1322) -'houttuin@rare.nl': 10117, # Jeroen Houttuin (1711) -'huitema@bellcore.com': 3147, # Christian Huitema (2032) -'hwb@merit.edu': 157, # Hans-Werner Braun (1104) -'hwb@sdsc.edu': 157, # Hans-Werner Braun (1222) -'irina@ennovatenetworks.com': 102134, # Irina Suconick (2959) -'jason.goldschmidt@sun.com': 103908, # Jason Goldschmidt (3082) -'jcrb@motorola.com': 19701, # Jon Bennett (3246) -'jcurran@nnsc.nsf.net': 4816, # John Curran (1355) -'jean-louis.leroux@rd.francetelecom.com': 105705, # Jean-Louis Le Roux (6001) -'jeff.turner@raba.com': 20193, # Jeff Turner (2408) -'jim@wovensystems.com': 122623, # Jim Martin (5186) -'jkr@cray.com': 4230, # John K. Renwick (1374) -'jkreynolds@isi.edu': 2804, # Joyce K. Reynolds (1084) -'jmahdavi@earthlink.net': 6344, # Jamshid Mahdavi (3819) -'jonsson@mathematik.uni-marburg.de': 121325, # Jakob Jonsson (3447) -'jrmii@isc.org': 122623, # Jim Martin (5905) -'jstewart@isi.edu': 10845, # John Stewart (2270) -'jwesth@microsoft.com': 105447, # Jeff Westhead (3645) -'kaj@nvuxr.cc.bellcore.com': 3798, # Kaj Tesink (1233) -'keith.evans@tandem.com': 21647, # Keith Evans (2371) -'kimh@internic.net': 10057, # Kim Hubbard (2050) -'lili@ss8networks.com': 103829, # Li Li (3214) -'linn@ultra.enet.dec.com': 3385, # John Linn (1113) -'lln@csee.ltu.se': 102381, # Lars-Ake Larzon (3828) -'llp@cs.arizona.edu': 112235, # Larry Peterson (2309) -'long@nortelnetworks.com': 23036, # Lyndon Ong (2719) -'lsanchez@ir.bbn.com': 19237, # Luis A. Sanchez (2488) -'luo@weiluo.net': 105095, # Wei Luo (6074) -'lyman@bbn.com': 112574, # Lyman Chapin (1358) -'mahdavi@novell.com': 6344, # Jamshid Mahdavi (2883) -'matsui.yoshinori@jp.panasonic.com': 113240, # Yoshinori Matsui (4396) -'matthew.bocci@alcatel.co.uk': 105786, # Matthew Bocci (4717) -'michael.gasson@korusolutions.com': 105474, # Mick Gasson (3351) -'michael.tuexen@icn.siemens.de': 104695, # Michael Tuexen (3237) -'mike.spanner@rnid.org.uk': 105473, # Mike Spanner (3351) -'minshall@fiberlane.com': 2740, # Greg Minshall (2309) -'mmurata@trl.ibm.co.jp': 102029, # Murata Makoto (3023) -'mogul@decwrl.dec.com': 2427, # Jeffrey Mogul (1191) -'mpeck@alumni.virginia.edu': 110886, # Michael Peck (6403) -'mshin@nist.gov': 105036, # Myung-Ki Shin (4038) -'narsim@nortelnetworks.com': 104924, # Narsimuloo Mangalpally (4129) -'nelson@sun.soe.clarkson.edu': 10462, # Russell Nelson (1159) -'ole@csli.stanford.edu': 2794, # Ole J. Jacobsen (1208) -'oppenheime1@applelink.apple.com': 3398, # Alan B. Oppenheimer (1504) -'osmund.desouza@att.com': 11150, # Osmund S. deSouza (1586) -'paul.sijben@picopoint.com': 103146, # Paul Sijben (3304) -'plzak@nic.ddn.mil': 113210, # Raymond Plzak (1956) -'ranjith.mukundan@wipro.com': 104923, # Ranjith Mukundan (4129) -'remco@sateh.com': 101463, # Remco van Mook (2322) -'renato@dstc.edu.au': 114553, # Renato Iannella (2611) -'rfox@tandem.com': 2360, # Richard Fox (1106) -'rgcole@att.com': 16738, # Robert G. Cole (3577) -'richard.stastny@gmail.com': 105862, # Richard Stastny (5526) -'rja@cisco.com': 6059, # Randall Atkinson (2130) -'rmoats@coreon.net': 19062, # Ryan Moats (2926) -'rsuri@cisco.com': 106738, # Rohit Suri (5412) -'s.kille@cs.ucl.ac.uk': 3150, # Steve Kille (1137) -'saint@wais.com': 11690, # Margaret St. Pierre (1625) -'schwartz@cs.colorado.edu': 113287, # Michael F. Schwartz (1273) -'scottw@internic.net': 5263, # Scott Williamson (1400) -'sekim@kt.com': 108004, # Sang-Eon Kim (5181) -'solimanhs@gmail.com': 104305, # Hesham Soliman (4763) -'songlee@ee.washington.edu': 105239, # Junhyuk Song (4493) -'steven.lass@verizonbusiness.com': 105329, # Steven Lass (4504) -'steven.van_den_berghe@alcatel-lucent.com': 105039, # Steven Van den Berghe (5835) -'sunil.iyengar@logica.com': 108201, # Sunil Iyengar (5458) -'surajk@techmahindra.com': 107092, # Suraj Kumar (5192) -'thommy.eklof@hotsip.com': 101609, # Thommy Eklof (2968) -'tnadeau@brocade.com': 104197, # Thomas Nadeau (7275) -'tob@netapp.com': 105606, # Toby Smith (4447) -'tom.taylor@rogers.com': 100754, # Tom Taylor (5189) -'van@csam.lbl.gov': 2703, # Van Jacobson (1185) -'vasile.radoaca@alcatel-lucent.com': 105515, # Vasile Radoaca (6074) -'wataru.imajuku@ieee.org': 105719, # Wataru Imajuku (6163) -'wls@rainfarm.com': 6734, # Walter Stickle (2150) -'woody@cseic.saic.com': 2498, # Robert A. Woodburn (1241) -'xing.chen@usa.alcatel.com': 21769, # Xing Chen (2989) -'xipeng@redback.com': 113285, # XiPeng Xiao (3272) -'xxiao@photuris.com': 113285, # XiPeng Xiao (3210) -'yakov@ibm.com': 10535, # Yakov Rekhter (1322) -'yjj@eng.umd.edu': 18900, # Yuan Jiang (1842) -'ylee@ceterusnetworks.com': 105236, # Young Lee (3214) -'z.wang@cs.ucl.ac.uk': 110650, # Zheng Wang (1335) -'zeev.vax@magnumsemi.com': 109637, # Zeev Vax (6285) -} - - -known_missing_person_records = [ - (3150, "Steve Kille"), -] - -def forward(apps,schema_editor): - - Email=apps.get_model('person','Email') - Person = apps.get_model('person', 'Person') - - for id, name in known_missing_person_records: - if not Person.objects.filter(id=id).exists(): - Person.objects.create(id=id, name=name, ascii=name) - - # Sanity check - for addr, id in new_addresses.items(): - if Email.objects.filter(address__iexact=addr).exists(): - raise Exception("%s already exists in the Email table"%addr) - if not Person.objects.filter(id=id).exists(): - raise Exception("ID #%s is missing in the Person table"%id) - - for addr in new_addresses.keys(): - Email.objects.create(address=addr,person_id=new_addresses[addr],active=False,primary=False) - -def reverse(apps,schema_editor): - Email=apps.get_model('person','Email') - Person = apps.get_model('person', 'Person') - #Person=apps.get_model('person','Person') - #print "new_addresses = {" - #for addr in sorted(new_addresses.keys()): - # print "'%s': %s, # %s"%(addr,new_addresses[addr],Person.objects.get(pk=new_addresses[addr]).name) - #print "}" - Email.objects.filter(address__in=new_addresses.keys()).delete() - Person.objects.filter(id__in=[ id for id,name in known_missing_person_records ]).delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0016_add_email_addresses_from_rfc_editor'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/person/migrations/0018_add_email_address_from_correlated_inspection.py b/ietf/person/migrations/0018_add_email_address_from_correlated_inspection.py deleted file mode 100644 index ca1a0cf6a..000000000 --- a/ietf/person/migrations/0018_add_email_address_from_correlated_inspection.py +++ /dev/null @@ -1,190 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-04-20 14:21 -from __future__ import unicode_literals - -from django.db import migrations - -new_addresses = { -'mrose@twg.com': 2455, # Marshall Rose (1085) -'mrose@psi.com': 2455, # Marshall Rose (1187) -'jpo@cs.nott.ac.uk': 3564, # Julian P. Onions (1086) -'case@utkux1.utk.edu': 2331, # Dr. Jeff D. Case (1089) -'sollins@xx.lcs.mit.edu': 3029, # Dr. Karen R. Sollins (1107) -'cerf@a.isi.edu': 3, # Dr. Vinton G. Cerf (1109) -'vcerf@isoc.org': 3, # Vinton G. Cerf (1790) -'mckenzie@bbn.com': 53, # Alexander McKenzie (1110) -'deering@pescadero.stanford.edu': 9009, # Dr. Steve E. Deering (1112) -'deering@xerox.com': 9009, # Steve Deering (1191) -'krol@uxc.cso.uiuc.edu': 304, # Edward M. Krol (1118) -'hagens@cs.wisc.edu': 2372, # Robert Hagens (1139) -'gmalkin@proteon.com': 2412, # Gary S. Malkin (1150) -'gmalkin@ftp.com': 2412, # Gary S. Malkin (1177) -'mrc@tomobiki-cho.cac.washington.edu': 3346, # Mark Crispin (1176) -'utf9@lingling.panda.com': 3346, # Mark Crispin (4042) -'april@nic.ddn.mil': 4356, # April Marine (1177) -'april@nisc.sri.com': 4356, # April N. Marine (1325) -'ferrari@ucbvax.berkeley.edu': 3599, # Dr. Domenico Ferrari (1193) -'dave@sabre.bellcore.com': 2775, # David M. Piscitello (1209) -'sob@harvard.harvard.edu': 2324, # Scott O. Bradner (1242) -'craig@sics.se': 1307, # Dr. Craig Partridge (1257) -'topolcic@nri.reston.va.us': 2828, # Claudio M. Topolcic (1367) -'jwong@garage.att.com': 8198, # Jeff A. Wong (1433) -'chim@relito.medeng.wfu.edu': 118803, # William Chimiak (1453) -'housley.mclean_csd@xerox.com': 5376, # Russ Housley (1457) -'mohta@cc.titech.ac.jp': 11038, # Dr. Masataka Ohta (1554) -'3858921@mcimail.com': 10836, # Robert G. Moskowitz (1597) -'rgm3@is.chrysler.com': 10836, # Robert G. Moskowitz (1918) -'mpullen@cs.gmu.edu': 14437, # Dr. Mark Pullen(1667) -'phill_gross@mcimail.com': 2791, # Phillip G. Gross (1719) -'gnc@ginger.lcs.mit.edu': 2662, # J. Noel Chiappa (1992) -'hallam@w3.org': 110217, # Phillip Hallam-Baker (2069) -'guerin@watson.ibm.com': 6128, # Dr. Roch Guerin (2212) -'sri@att.com': 8225, # Dr. Srinivas R. Sataluri (2247) -'rdaniel@acl.lanl.gov': 17304, # Dr. Ron Daniel (2288) -'ted_kuo@baynetworks.com': 13252, # Ted Kuo (2320) -'c.perkins@cs.ucl.ac.uk': 20209, # Dr. Colin Perkins (2354) -'mjs@securify.com': 17237, # Mark J. Schertler (2408) -'corson@isr.umd.edu': 19037, # Dr. Scott M. Corson (2501) -'mday@vinca.com': 101325, # Michael D. Day (2608) -'michael.mealling@rwhois.net': 9497, # Michael H. Mealling (2651) -'walshp@lucent.com': 103289, # Pat Walsh (2989) -'chopps@nexthop.com': 22933, # Christian Hopps (2991) -'robart@nortelnetworks.com': 102393, # Lewis C. Robart (2995) -'fredette@photonex.com': 21059, # Dr. Andre N. Fredette (3036) -'pcain@bbn.com': 20713, # Patrick Cain (3161) -'kawano@core.ecl.net': 20826, # Dr. Tetsuo Kawano (3186) -'yves.tjoens@alcatel.be': 102145, # Yves T'Joens (3203) -'muckai@atoga.com': 101632,# Dr. Muckai K. Girish (3213) -'schooler@research.att.com': 5439, # Eve M. Schooler (3261) -'jh@song.fi': 4319, # Dr. Juha Heinanen (3270) -'pat_thaler@agilent.com': 112851, # Patricia Thaler (3385) -'burcak@juniper.net': 101833, # Burcak N. Beser (3495) -'mstewart1@nc.rr.com': 104837, # Mark Stewart (3591) -'dan.grossman@motorola.com': 6564, # Daniel B. Grossman (3819) -'hbbeykirch@web.de': 104273, # Hans Beykirch (3867) -'coar@apache.org': 100988, # Ken A.L. Coar (3875) -'dvenable@crt.xerox.com': 22957, # Dr. Dennis L. Venable (3949) -'hannsjuergen.schwarzbauer@siemens.com': 103471, # Dr. HannsJuergen Schwarzbauer (4165) -'dmaltz@microsoft.com': 101236, # Dave A. Maltz (4728) -'yihchun@uiuc.edu': 101395, # Yih-Chun Hu (4728) -'yakov@juniper.com': 10535, # Yakov Rekhter (4760) -'hong-yon.lach@motorola.com': 104527, # Hong Lach(4885) -'bgp-confederations@st04.pst.org': 6819, # Paul S. Traina (5065) -'dhaval@moowee.tv': 21770, # Dhaval Shah (5140) -'hsalama@citexsoftware.com': 102549, # Dr. Hussein F. Salama (5140) -'steve.vogelsang@alcatel-lucent.com': 104509, # Stephen Vogelsang (5143) -'fredi@entel.upc.es': 106027, # Fredric Raspall (5475) -'mjl@caida.org': 106174, # Matthew J. Luckie (7514) - -'kzm@hplabs.hp.com': 2731, #,Keith McCloghrie (1155) -'mathis@faraday.ece.cmu.edu': 2674, # Matt Mathis (1164) -'ariel@relay.prime.com': 4418, # Robert Ullman (1183) -'pvm@isi.edu': 1310, # Dr. Paul V. Mockapetris (1183) -'craig_everhart@transarc.com': 2867, # Craig Everhart (1183) -'louie@sayshell.umd.edu': 2413, # Louis A. Mamakos (1183) -'jcl@sabre.bellcore.com': 2883, # Joe L. Lawrence (1209) -'colella@osi3.ncsl.nist.gov': 2738, # Richard P. Colella (1237) -'callon@bigfut.enet.dec.com': 2723, # Ross Callon (1237) -'scottw@diis.ddn.mil': 5263, # Scott Williamson (1261) -'tbradley@wellfleet.com': 4040, # Terry Bradley (1293) -'weider@ans.net': 3428, # Chris Weider (1309) -'cohen@isi.edu': 184, # Dr. Danny Cohen (1357) -'boss@sunet.se': 3733, # Bernhard Stockman (1404) -'kannan@sejour.lkg.dec.com': 5794, # Kannan Alagappan (1412) -'klensin@infoods.unu.edu': 106911, # John C. Klensin (1425) -'vcerf@cnri.reston.va.us': 3, # Dr. Vinton G. Cerf (1430) -'jsq@tic.com': 1674, # John S. Quarterman (1432) -'linn@gza.com': 3385, # John Linn (1508) -'vinton_cerf@mcimail.com': 3, # Dr. Vinton G. Cerf (1607) -'bcole@cisco.com': 10341, # Bruce A. Cole (1664) -'iana@isi.edu': 105716, # IANA (1797) -'yee@atlas.arc.nasa.gov': 113428, # Peter Yee (1803) -'getchell@es.net': 4504, # Arlene Getchell (1803) -'frederic@parc.xerox.com': 8677, # Ron Frederick (1889) -'tli@skat.usc.edu': 4475, # Dr. Tony Li (1997) -'gerry@europe.shiva.com': 10451, # Dr. Gerry Meyer (2091) -'michaelm@internic.net': 9497, # Michael H. Mealling (2168) -'christian.maciocco@intel.com': 10459, # Christian Maciocco (2429) -'thomas.r.gardos@intel.com': 101230, # Dr. Thomas R. Gardos (2429) -'gim.l.deisher@intel.com': 22906, # Gim L. Deisher (2429) -'donald.newell@intel.com': 21437, # Donald Newell (2429) -'hal@pgp.com': 100795, # Hal Finney (2440) -'rodney@unitran.com': 8663, # Rodney L. Thayer (2440) -'mark.hoy@mainbrace.com': 100841, # Mark Hoy (2442) -'tds@lucent.com': 113202, # A. DeSimone (2458) -'eric.baize@bull.com': 18674, # Eric Baize (2478) -'sanjayk@dnrc.bell-labs.com': 21758, # Sanjay Kamat (2676) -'jboyle@level3.net': 20451, # Jim Boyle (2748) -'asastry@cisco.com': 17769, # Arun Sastry (2748) -'ronc@cisco.com': 20097, # Ron Cohen (2748) -'raju@research.att.com': 19384, # Raju Rajan (2749) -'arnt@troll.no': 18315, # Arnt Gulbrandsen (2782) -'tony1@home.net': 4475, # Dr. Tony Li (2784) -'angelos@cis.upenn.edu': 18975, # Angelos D. Keromytis (2792) -'jrv@interlinknetworks.com': 2856, # John Vollbrecht (2903) -'pmoore@peerless.com': 100005, # Paul Moore (2910) -'yxu@watercove.com': 103295, # Yingchun Xu (2989) -'eyal@sanrad.com': 102526, # Eyal Felstaine (2998) -'mstevens@ellacoya.com': 102976, # Mark L. Stevens (3127) -'bklim@lge.com': 103292, # Byung-Keun Lim (3141) -'mmunson@gte.net': 102715, # Mark Munson (3141) -'charles.lo@vodafone-us.com': 102827, # Charles N. Lo (3141) -'serge@awardsolutions.com': 103296, # Serge Manning (3141) -'afredette@charter.net': 21059,# Dr. Andre N. Fredette (3212) -'pdoolan@acm.org': 20531, # Paul Doolan (3212) -'loa.andersson@utfors.se': 20682, # Loa Andersson (3212) -'mbaker@planetfred.com': 102843, # Mark Baker (3236) -'paolo.crivellari@belgacom.be': 101265, # Paolo Crivellari (3301) -'garyfishman@lucent.com': 105628, # Gary Fishman (3356) -'hain@tndh.net': 9051, # Tony L. Hain (3363) -'jeff@redback.com': 8669, # Jeff T. Johnson (3498) -'timur.friedman@lip6.fr': 104338, # Timur Friedman (3611) -'caceres@watson.ibm.com': 10929, # Ramon Caceres (3611) -'cmonia@pacbell.net': 104763, # Charles Monia (3643) -'roweber@ieee.org': 105152, # Ralph Weber (3643) -'milan.merhar@sun.com': 100798, # Milan Merhar (3643) -'konishi@jp.apan.net': 6273, # Kazunori Konishi (3743) -'bob@airespace.com': 106531L, # Bob O'Hara (3990) -'bob.ohara@computer.org': 106531L, # Bob O'Hara (5412) -'falk@isi.edu': 21226, # Aaron Falk (4440) -'junhyuk.song@gmail.com': 105239, # Junhyuk Song (4615) -'iab@ietf.org': 104167, # IAB (4732) -'jasdips@rwhois.net': 18211, # Jasdip Singh (2167) -'audet@nortelnetworks.com': 20858, # Francois Audet (3204) -'mzonoun@nortelnetworks.com': 101819, # Mo R. Zonoun (3204) -'kasten@europa.clearpoint.com': 2706, # Frank Kastenholz (1284) -'dee@ranger.enet.dec.com': 102391, # Donald E. Eastlake (1455) - -} - - -def forward(apps,schema_editor): - - Email=apps.get_model('person','Email') - - # Sanity check - for addr in new_addresses.keys(): - if Email.objects.filter(address__iexact=addr).exists(): - raise Exception("%s already exists in the Email table"%addr) - - for addr in new_addresses.keys(): - Email.objects.create(address=addr,person_id=new_addresses[addr],active=False,primary=False) - -def reverse(apps,schema_editor): - Email=apps.get_model('person','Email') - #Person=apps.get_model('person','Person') - #print "new_addresses = {" - #for addr in sorted(new_addresses.keys()): - # print "'%s': %s, # %s"%(addr,new_addresses[addr],Person.objects.get(pk=new_addresses[addr]).name) - #print "}" - Email.objects.filter(address__in=new_addresses.keys()).delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0017_add_email_address_from_parsed_rfcs'), - ] - - operations = [ - migrations.RunPython(forward,reverse) - ] diff --git a/ietf/person/migrations/0019_add_discovered_people.py b/ietf/person/migrations/0019_add_discovered_people.py deleted file mode 100644 index b0b5c1258..000000000 --- a/ietf/person/migrations/0019_add_discovered_people.py +++ /dev/null @@ -1,266 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-02 14:13 -from __future__ import unicode_literals - -from django.db import migrations - -from collections import namedtuple - -A=namedtuple('A',['address','name']) - -discovered_people = [ - -A(address='nhall@cs.wisc.edu',name='Nancy E. Hall'), # (parsed 1070) -A(address='ljm@twg.com',name='Leo J. McLaughlin III'), # (parsed 1088) -A(address='schoff@stonewall.nyser.net',name='Marty Schoffstall'), # (parsed 1089) -A(address='fedor@patton.nyser.net',name='Mark Fedor'), # (parsed 1089) -A(address='schoff@nisc.nyser.net',name='Martin Lee Schoffstall'), # (parsed 1098) -A(address='lk@cs.ucla.edu',name='Leonard Kleinrock'), # (parsed 1121) -A(address='boehm@cs.ucla.edu',name='Barry Boehm'), # (parsed 1121) -A(address='little@saic.com',name='Mike Little'), # (parsed 1126) -A(address='akullberg@bbn.com',name='A. Kullberg'), # (parsed 1141) -A(address='tmallory@ccv.bbn.com',name='Tracy Mallory'), # (parsed 1141) -A(address='zweig@cs.uiuc.edu',name='Johnny Zweig'), # (parsed 1145) -A(address='stine@sparta.com',name='Robert Stine'), # (rfced 1147) -A(address='dwaitzman@bbn.com',name='David Waitzman'), # (parsed 1149) -A(address='jch@tcgould.tn.cornell.edu',name='Jeffrey C. Honig'), # (parsed 1164) -A(address='mills@ecf.ncsl.nist.gov',name='Kevin L. Mills'), # (parsed 1169) -A(address='jbvb@ftp.com',name='James Van Bokkelen'), # (rfced 1173) -A(address='libes@cme.nist.gov',name='Don Libes'), # (parsed 1178) -A(address='claudiak@spider.co.uk',name='Claudia Jeanne Kale'), # (parsed 1180) -A(address='teds@spider.co.uk',name='Theodore John Socolofsky'), # (parsed 1180) -A(address='k13@nikhef.nl',name='Rob Blokzijl'), # (parsed 1181) -A(address='kahin@hulaw.harvard.edu',name='Brian Kahin'), # (parsed 1192) -A(address='rws@expo.lcs.mit.edu',name='Bob Scheifler'), # (parsed 1198) -A(address='rice@sumex-aim.stanford.edu',name='James Rice'), # (parsed 1203) -A(address='yeh@netix.com',name='Shannon Yeh'), # (parsed 1204) -A(address='dlee@netix.com',name='David Lee'), # (parsed 1204) -A(address='paulc@rchland.iinus1.ibm.com',name='Paul Chmielewski'), # (parsed 1205) -A(address='lynch@isi.edu',name='Daniel C. Lynch'), # (parsed 1208) -A(address='westine@isi.edu',name='Ann Westine'), # (parsed 1211) -A(address='wbe@bbn.com',name='Winston Edmond'), # (parsed 1221) -A(address='louiss@ibm.com',name='Lou Steinberg'), # (parsed 1224) -A(address='kolb@psi.com',name='Christopher P. Kolb'), # (parsed 1232) -A(address='tacox@sabre.bellcore.com',name='Tracy A. Cox'), # (parsed 1233) -A(address='maguire@cs.columbia.edu',name='Gerald Q. Maguire'), # (parsed 1235) -A(address='lmorales@huachuca-emh8.army.mil',name='Luis F. Morales'), # (parsed 1236) -A(address='phasse@huachuca-emh8.army.mil',name='Phillip R. Hasse'), # (parsed 1236) -A(address='chi@osf.org',name='Chikong Shue'), # (parsed 1240) -A(address='bill@comm.wang.com',name='William Haggerty'), # (parsed 1240) -A(address='holbrook@cic.net',name='Paul Holbrook'), # (parsed 1244) -A(address='bryan@umich.edu',name='Bryan Beecher'), # (parsed 1249) -A(address='brian@ucsd.edu',name='Brian Kantor'), # (rfced 1258) -A(address='mkapor@eff.org',name='Mitchell Kapor'), # (parsed 1259) -A(address='leslie@diis.ddn.mil',name='Leslie Nobile'), # (parsed 1261) -A(address='jmartin@magnus.acs.ohio-state.edu',name='Jerry Martin'), # (parsed 1290) -A(address='mkl@nisc.sri.com',name='Mark K. Lottor'), # (parsed 1296) -A(address='bwormley@novell.com',name='Raymond Brett Wormley'), # (parsed 1298) -A(address='steveb@novell.com',name='Steve Bostock'), # (parsed 1298) -A(address='mkennedy@isi.edu',name='Mary Kennedy'), # (parsed 1299) -A(address='0004689513@mcimail.com',name='Stanley R. Greenfield'), # (parsed 1300) -A(address='armstrong@wrc.xerox.com',name='Susan M. Armstrong'), # (parsed 1301) -A(address='marzullo@cs.cornell.edu',name='Keith A. Marzullo'), # (parsed 1301) -A(address='heker@nisc.jvnc.net',name='Sergio Heker'), # (parsed 1309) -A(address='geoff@east.sun.com',name='Geoff Arnold'), # (parsed 1312) -A(address='katz@isi.edu',name='Alan Katz'), # (parsed 1314) -A(address='charles@acc.com',name='Charles Carvalho'), # (parsed 1315) -A(address='thimmela@sniabg.wa.sni.de',name='Peter Kuehn'), # (parsed 1329) -A(address='martyne@nr-tech.cit.cornell.edu',name='acm siguccs'), # (rfced 1359) -A(address='mallen@novell.com',name='Michael Allen'), # (parsed 1362) -A(address='72550.1634@compuserve.com',name='Karanjit Siyan'), # (parsed 1365) -A(address='tpt2@isi.edu',name='Tom Tignor'), # (parsed 1373) -A(address='elliott@isi.edu',name='Josh Elliott'), # (parsed 1399) -A(address='nic@osu.edu',name='Jerry Martin'), # (parsed 1402) -A(address='rcdixon@ralvmg.vnet.ibm.com',name='Roy C. Dixon'), # (parsed 1434) -A(address='dmj@boombox.micro.umn.edu',name='David Johnson'), # (parsed 1436) -A(address='alberti@boombox.micro.umn.edu',name='Bob Alberti'), # (parsed 1436) -A(address='daniel@boombox.micro.umn.edu',name='Daniel Torrey'), # (parsed 1436) -A(address='fxa@boombox.micro.umn.edu',name='Farhad Anklesaria'), # (parsed 1436) -A(address='linimon@lonesome.com',name='Mark Linimon'), # (parsed 1437) -A(address='troth@rice.edu',name='Rick Troth'), # (parsed 1440) -A(address='rebraudes@tasc.com',name='Robert Braudes'), # (parsed 1458) -A(address='gszabele@tasc.com',name='Steve Zabele'), # (parsed 1458) -A(address='ache@astral.msk.su',name='Andrew A. Chernov'), # (parsed 1489) -A(address='saltzer@mit.edu',name='Jerome H. Saltzer'), # (parsed 1498) -A(address='brunsene@email.enmu.edu',name='Eric Brunsen'), # (parsed 1501) -A(address='cook@path.net',name='Gordon Cook'), # (parsed 1527) -A(address='gavron@aces.com',name='Ehud Gavron'), # (parsed 1535) -A(address='tmendez@bbn.com',name='Trevor Mendez'), # (parsed 1546) -A(address='handa@etl.go.jp',name='Ken\x27ichi Handa'), # (parsed 1554) -A(address='earndoc@earncc.earn.net',name='EARN Staff'), # (parsed 1580) -A(address='mckenzie@ralvma.vnet.ibm.com',name='William F. McKenzie'), # (parsed 1593) -A(address='forster@cisco.com',name='James R. Forster'), # (parsed 1613) -A(address='satz@cisco.com',name='Greg Satz'), # (parsed 1613) -A(address='r.day@jnt.ac.uk',name='Robert Day'), # (parsed 1613) -A(address='gglick@cisco.com',name='Gilbert Glick'), # (parsed 1613) -A(address='francois@wais.com',name='Francois Schiettecatte'), # (parsed 1625) -A(address='morris@wais.com',name='Harry Morris'), # (parsed 1625) -A(address='wrt1@cornell.edu',name='William Turner'), # (parsed 1691) -A(address='connolly@udel.edu',name='Tom Connolly'), # (parsed 1693) -A(address='ficarell@cpdmfg.cig.mot.com',name='Domenic Ficarella'), # (parsed 1705) -A(address='drg508@crane-ns.nwscc.sea06.navy.mil',name='Dan R. Gowin'), # (parsed 1708) -A(address='pleitner@cs.curtin.edu.au',name='Scott Pleitner'), # (parsed 1712) -A(address='flint@cs.curtin.edu.au',name='Daniel Baldoni'), # (parsed 1712) -A(address='craig@cs.curtin.edu.au',name='Craig Farrell'), # (parsed 1712) -A(address='artur@fct.unl.pt',name='Artur Romao'), # (parsed 1713) -A(address='tae@novell.com',name='Tae Sung'), # (parsed 1791) -A(address='sylvain.langlois@der.edf.fr',name='Sylvain Langlois'), # (parsed 1802) -A(address='rlasher@forsythe.stanford.edu',name='Rebecca Lasher'), # (parsed 1807) -A(address='execdir@fnc.gov',name='Federal Networking Council'), # (parsed 1811) -A(address='peter.staubach@eng.sun.com',name='Peter Staubach'), # (parsed 1813) -A(address='dcoli@cisco.com',name='Dave Coli'), # (parsed 1841) -A(address='krowett@cisco.com',name='Kevin Rowett'), # (parsed 1841) -A(address='agh@cisco.com',name='Andy Harvey'), # (parsed 1841) -A(address='joelle@cisco.com',name='Joelle Bafile Chapman'), # (parsed 1841) -A(address='hzrfc@usai.asiainfo.com',name='Ya-Gui Wei'), # (parsed 1842) -A(address='jian@is.rice.edu',name='Jian Q. Li'), # (parsed 1842) -A(address='ding@beijing.asiainfo.com',name='Jian Ding'), # (parsed 1842) -A(address='zhang@orion.harvard.edu',name='Yun Fei Zhang'), # (parsed 1842) -A(address='lee@csl.stanford.edu',name='Fung Fung Lee'), # (parsed 1843) -A(address='romkey@apocalypse.org',name='John Romkey'), # (rfced 1862) -A(address='hancock@network-1.com',name='Bill Hancock'), # (parsed 1882) -A(address='pjnesser@rocket.com',name='Philip J. Nesser'), # (parsed 1916) -A(address='rogers@isi.edu',name='Craig Milo Rogers'), # (parsed 1927) -A(address='engebred@ncr.disa.mil',name='D.W. Engebretson'), # (parsed 1956) -A(address='abarbir@gandalf.ca',name='Abdulkader Barbir'), # (parsed 1993) -A(address='randy@cs.berkeley.edu',name='Randy H. Katz'), # (parsed 2041) -A(address='jra@scfn.thpl.lib.fl.us',name='Jay R. Ashworth'), # (parsed 2100) -A(address='psv@nada.kth.se',name='Peter Svanberg'), # (parsed 2130) -A(address='ramos@isi.edu',name='Alegre Ramos'), # (parsed 2199) -A(address='ejw@ics.uci.edu',name='E. James Whitehead'), # (parsed 2291) -A(address='bressen@leftbank.com',name='Andrew K. Bressen'), # (parsed 2321) -A(address='koos@cetis.hvu.nl',name='Koos van den Hout'), # (parsed 2322) -A(address='andre@nl.net',name='Andre Koopal'), # (parsed 2322) -A(address='slavitch@loran.com',name='Michael Slavitch'), # (parsed 2325) -A(address='czhu@ix.netcom.com',name='Chad Zhu'), # (parsed 2429) -A(address='garys@pictel.com',name='Gary Sullivan'), # (parsed 2429) -A(address='djw@vineyard.net',name='David Waitzman'), # (parsed 2549) -A(address='msm@pa.dec.com',name='Mark Manasse'), # (parsed 2550) -A(address='delacruz@isi.edu',name='a. delacruz'), # (rfced 2599) -A(address='roberts@icann.org',name='Michael M. Roberts'), # (parsed 2860) -A(address='s.sivalingham@ericsson.com',name='Sanjeevan Sivalingham'), # (parsed 2989) -A(address='hskoo@sta.samsung.com',name='Haeng S. Koo'), # (parsed 2989) -A(address='ejaques@akamail.com',name='Eric Jaques'), # (parsed 2989) -A(address='kennedyh@engin.umich.edu',name='Hugh Kennedy'), # (parsed 3091) -A(address='yoshi@spg.yrp.nttdocomo.co.jp',name='Takeshi Yoshimura'), # (parsed 3095) -A(address='raj.sanmugam@ericsson.ca',name='Raj Sanmugam'), # (parsed 3113) -A(address='stuartb@uu.net',name='s. barkley'), # (rfced 3127) -A(address='stjohns@rainmakertechnologies.com',name='m. st.johns'), # (rfced 3127) -A(address='ayaki@ddi.co.jp',name='Takahiro Ayaki'), # (parsed 3141) -A(address='t-seki@kddi.com',name='Takuo Seki'), # (parsed 3141) -A(address='jay.perry@netapp.com',name='Jay Perry'), # (parsed 3198) -A(address='dleshc@tibco.com',name='Dan Leshchiner'), # (parsed 3208) -A(address='todd@talarian.com',name='Todd L. Montgomery'), # (parsed 3208) -A(address='rajitha@cisco.com',name='Rajitha Sumanasekera'), # (parsed 3208) -A(address='tim-kilty@mediaone.net',name='Timothy E. Kilty'), # (parsed 3212) -A(address='peter.stark@ecs.ericsson.com',name='Peter Stark'), # (parsed 3236) -A(address='stiliadi@bell-labs.com',name='Dimitrios Stiliadis'), # (parsed 3246) -A(address='kent.benson@tellabs.com',name='Kent Benson'), # (parsed 3246) -A(address='bill.courtney@trw.com',name='William Courtney'), # (parsed 3246) -A(address='crk@research.att.com',name='Charles Kalmanek'), # (parsed 3247) -A(address='tim_ellison@uk.ibm.com',name='Tim Ellison'), # (parsed 3253) -A(address='jmacd@cs.berkeley.edu',name='Joshua P. MacDonald'), # (parsed 3284) -A(address='kcleung@cs.ttu.edu',name='Ka-Cheong Leung'), # (parsed 3321) -A(address='yjkim@pec.etri.re.kr',name='Yong-Jin Kim'), # (parsed 3338) -A(address='mahesh@erg.abdn.ac.uk',name='Mahesh Sooriyabandara'), # (parsed 3449) -A(address='mark.foster@neustar.biz',name='Mark D. Foster'), # (parsed 3482) -A(address='tlatla@verizon.net',name='Terry L. Anderson'), # (parsed 3525) -A(address='mika.kojo@helsinki.fi',name='Mika Kojo'), # (parsed 3526) -A(address='ak@suse.de',name='Andi Kleen'), # (parsed 3549) -A(address='atsushi@exa.onlab.ntt.co.jp',name='Atsushi Watanabe'), # (parsed 3604) -A(address='steve@lsi.upc.es',name='Steven Willmott'), # (parsed 3616) -A(address='john@yas.com',name='John Bevilacqua'), # (parsed 3634) -A(address='donnell@mcdata.com',name='Michael E. O\x27Donnell'), # (parsed 3643) -A(address='rsabett@cooley.com',name='Randy V. Sabett'), # (parsed 3647) -A(address='swu@infoliance.com',name='Stephen S. Wu'), # (parsed 3647) -A(address='reagle@mit.edu',name='Joseph M. Reagle'), # (parsed 3653) -A(address='hlqian@cnnic.net.cn',name='QIAN Hualin'), # (parsed 3743) -A(address='huangk@alum.sinica.edu',name='Kenny HUANG'), # (parsed 3743) -A(address='dlee@yahoo-inc.com',name='Daniel T Lee'), # (parsed 3745) -A(address='richard@elysium.ltd.uk',name='Richard Clark'), # (parsed 3745) -A(address='gery.verwimp@siemens.com',name='Gery Verwimp'), # (parsed 3868) -A(address='duerst@w3.org',name='Martin Duerst'), # (parsed 3987) -A(address='joes@exmsft.com',name='Joe Souza'), # (parsed 4171) -A(address='wayland@troikanetworks.com',name='Wayland Jeong'), # (parsed 4172) -A(address='rod.mullendore@mcdata.com',name='Rod Mullendore'), # (parsed 4172) -A(address='mark_edwards@adaptec.com',name='Mark Edwards'), # (parsed 4172) -A(address='sllee@kisa.or.kr',name='Seoklae Lee'), # (parsed 4196) -A(address='dhcheon@mmaa.or.kr',name='d.h. cheon'), # (rfced 4269) -A(address='havander@cisco.com',name='Harmen van der Linde'), # (parsed 4382) -A(address='vijay.nanjundaswamy@oracle.com',name='Vijay Nanjundaswamy'), # (parsed 4403) -A(address='dbs@mts.ru',name='Dennis Shefanovski'), # (parsed 4491) -A(address='olivier.rousseau@alcatel.fr',name='Olivier Rousseau'), # (parsed 4497) -A(address='mab@cryptico.com',name='Martin Boesgaard'), # (parsed 4503) -A(address='mvp@cryptico.com',name='Mette Vesterager'), # (parsed 4503) -A(address='jongchoi@us.ibm.com',name='Jong Hyuk Choi'), # (parsed 4533) -A(address='tommcs@us.ibm.com',name='Tom McSweeney'), # (parsed 4544) -A(address='yaoth@huawei.com',name='Zhonghui Yao'), # (parsed 4564) -A(address='sato652@oki.com',name='Noriyuki Sato'), # (parsed 4585) -A(address='davidleon123@yahoo.com',name='David Leon'), # (parsed 4588) -A(address='snw@twnic.net.tw',name='Nai-Wen HSU'), # (parsed 4713) -A(address='carolina.canales@ericsson.com',name='Carolina Canales-Valenzuela'), # (parsed 4740) -A(address='adahmed@cisco.com',name='Adeel Ahmed'), # (parsed 4779) -A(address='ip-sfs@mur.at',name='Aaron Bachmann'), # (parsed 4824) -A(address='paul_mabey@cable.comcast.com',name='Paul Mabbey'), # (parsed 4972) -A(address='satish.kumar@ti.com',name='s. kumar'), # (rfced 5098) -A(address='john.shirron@ecitele.com',name='John Shirron'), # (parsed 5143) -A(address='diego@fastsoft.com',name='Diego Dugatkin'), # (parsed 5180) -A(address='ahamza@cisco.com',name='Ahmed Hamza'), # (parsed 5180) -A(address='gogo@tera.ics.keio.ac.jp',name='Kazutaka Gogo'), # (parsed 5184) -A(address='shibrie@tera.ics.keio.ac.jp',name='Rie Shibui'), # (parsed 5184) -A(address='joseph.tardo@nevisnetworks.com',name='Joseph Tardo'), # (parsed 5209) -A(address='rick_whitner@agilent.com',name='Rick Whitner'), # (parsed 5236) -A(address='tarun.banka@colostate.edu',name='Tarun Banka'), # (parsed 5236) -A(address='abhijit_bare@agilent.com',name='Abhijit A. Bare'), # (parsed 5236) -A(address='nischal.piratla@telekom.de',name='Nischal M. Piratla'), # (parsed 5236) -A(address='gwhiz@gwhiz.com',name='Michael Glenn Williams'), # (parsed 5412) -A(address='subbu@arubanetworks.com',name='Subbu Ponnuswamy'), # (parsed 5413) -A(address='sugiura.mikihito@jp.panasonic.com',name='Mikihito Sugiura'), # (parsed 5414) -A(address='a-mondal@northwestern.edu',name='Amit Mondal'), # (parsed 5562) -A(address='jack@atosc.org',name='Aymeric Moizard'), # (parsed 5574) -A(address='ae.arcia@telecom-bretagne.eu',name='Andres Arcia'), # (parsed 5690) -A(address='yong.xin@radisys.com',name='Yong Xin'), # (parsed 5707) -A(address='quynh.dang@nist.gov',name='Quynh Dang'), # (parsed 5758) -A(address='gporcu@gmail.com',name='Giorgio Porcu'), # (parsed 5826) -A(address='jblanton@irg.cs.ohiou.edu',name='Josh Blanton'), # (parsed 5827) -A(address='jrrivers@yahoo.com',name='JR. Rivers'), # (parsed 5837) -A(address='turkal@google.com',name='Warren Turkal'), # (parsed 5841) -A(address='rhay@google.com',name='Richard Hay'), # (parsed 5841) -A(address='hemant.malik@airtel.in',name='Hemant Malik'), # (parsed 5946) -A(address='kalle@tankesaft.se',name='Karl-Magnus Moller'), # (parsed 5984) -A(address='chaitk@yahoo.com',name='Chaitanya Kodeboniya'), # (parsed 7117) -A(address='inazar@deviantart.com',name='Imran Nazar'), # (parsed 7168) -A(address='max@rfc2324.org',name='Maximilian Wilhelm'), # (parsed 7511) -A(address='mansaxel@besserwisser.org',name='Mans Nilsson'), # (parsed 8135) -A(address='magda@netinsight.net',name='Magnus Danielson'), # (parsed 8135) - - - -] - -def forward(apps, schema_editor): - Person = apps.get_model('person','Person') - Email = apps.get_model('person','Email') - for address,name in discovered_people: - if Email.objects.filter(address=address).exists(): - print "Skipping",address,name,": address already in Email table" - # If this happens, rollback will not be perfect - else: - p = Person.objects.create(name=name,ascii=name) - p.email_set.create(address=address) - -def reverse(apps, schema_editor): - Email = apps.get_model('person','Email') - for address, name in discovered_people: - e = Email.objects.get(address=address) - e.person.delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0018_add_email_address_from_correlated_inspection'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/person/migrations/0020_auto_20170701_0325.py b/ietf/person/migrations/0020_auto_20170701_0325.py deleted file mode 100644 index f83e8b9da..000000000 --- a/ietf/person/migrations/0020_auto_20170701_0325.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-07-01 03:25 -from __future__ import unicode_literals - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0019_add_discovered_people'), - ] - - operations = [ - migrations.AlterField( - model_name='email', - name='address', - field=models.CharField(max_length=64, primary_key=True, serialize=False, validators=[django.core.validators.EmailValidator()]), - ), - ] diff --git a/ietf/person/migrations/0021_personalapikey.py b/ietf/person/migrations/0021_personalapikey.py deleted file mode 100644 index 1e42c415f..000000000 --- a/ietf/person/migrations/0021_personalapikey.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-12-15 08:19 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion -import ietf.person.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0020_auto_20170701_0325'), - ] - - operations = [ - migrations.CreateModel( - name='PersonalApiKey', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('endpoint', models.CharField(choices=[(b'/api/iesg/position', b'/api/iesg/position')], max_length=128)), - ('created', models.DateTimeField(default=datetime.datetime.now)), - ('valid', models.BooleanField(default=True)), - ('salt', models.BinaryField(default=ietf.person.models.salt, max_length=12)), - ('count', models.IntegerField(default=0)), - ('latest', models.DateTimeField(blank=True, null=True)), - ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='apikeys', to='person.Person')), - ], - ), - migrations.CreateModel( - name='PersonEvent', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('time', models.DateTimeField(default=datetime.datetime.now, help_text=b'When the event happened')), - ('type', models.CharField(choices=[(b'apikey_login', b'API key login')], max_length=50)), - ('desc', models.TextField()), - ], - options={ - 'ordering': ['-time', '-id'], - }, - ), - migrations.CreateModel( - name='PersonApiKeyEvent', - fields=[ - ('personevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='person.PersonEvent')), - ('key', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.PersonalApiKey')), - ], - bases=('person.personevent',), - ), - migrations.AddField( - model_name='personevent', - name='person', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person'), - ), - ] diff --git a/ietf/review/migrations/0001_initial.py b/ietf/review/migrations/0001_initial.py index 6bb49423c..33928e808 100644 --- a/ietf/review/migrations/0001_initial.py +++ b/ietf/review/migrations/0001_initial.py @@ -1,123 +1,123 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations import datetime +from django.db import migrations, models +import django.db.models.deletion +import ietf.review.models +import ietf.utils.models +import ietf.utils.validators class Migration(migrations.Migration): + initial = True + dependencies = [ - ('name', '0015_insert_review_name_data'), - ('group', '0008_auto_20160505_0523'), - ('person', '0014_auto_20160613_0751'), - ('doc', '0012_auto_20160207_0537'), + ('group', '0001_initial'), + ('name', '0001_initial'), + ('person', '0001_initial'), + ('doc', '0001_initial'), ] operations = [ migrations.CreateModel( name='NextReviewerInTeam', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('next_reviewer', models.ForeignKey(to='person.Person')), - ('team', models.ForeignKey(to='group.Group')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('next_reviewer', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('team', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ], options={ 'verbose_name': 'next reviewer in team setting', 'verbose_name_plural': 'next reviewer in team settings', }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ResultUsedInReviewTeam', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('result', models.ForeignKey(to='name.ReviewResultName')), - ('team', models.ForeignKey(to='group.Group')), - ], - options={ - 'verbose_name': 'review result used in team setting', - 'verbose_name_plural': 'review result used in team settings', - }, - bases=(models.Model,), ), migrations.CreateModel( name='ReviewerSettings', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('min_interval', models.IntegerField(default=30, verbose_name=b'Can review at most', choices=[(7, b'Once per week'), (14, b'Once per fortnight'), (30, b'Once per month'), (61, b'Once per two months'), (91, b'Once per quarter')])), - ('filter_re', models.CharField(help_text=b'Draft names matching regular expression should not be assigned', max_length=255, verbose_name=b'Filter regexp', blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('min_interval', models.IntegerField(blank=True, choices=[(7, b'Once per week'), (14, b'Once per fortnight'), (30, b'Once per month'), (61, b'Once per two months'), (91, b'Once per quarter')], null=True, verbose_name=b'Can review at most')), + ('filter_re', models.CharField(blank=True, help_text=b'Draft names matching this regular expression should not be assigned', max_length=255, validators=[ietf.utils.validators.RegexStringValidator()], verbose_name=b'Filter regexp')), ('skip_next', models.IntegerField(default=0, verbose_name=b'Skip next assignments')), - ('remind_days_before_deadline', models.IntegerField(help_text=b"To get an email reminder in case you forget to do an assigned review, enter the number of days before a review deadline you want to receive it. Clear the field if you don't want a reminder.", null=True, blank=True)), - ('person', models.ForeignKey(to='person.Person')), - ('team', models.ForeignKey(to='group.Group')), + ('remind_days_before_deadline', models.IntegerField(blank=True, help_text=b"To get an email reminder in case you forget to do an assigned review, enter the number of days before review deadline you want to receive it. Clear the field if you don't want a reminder.", null=True)), + ('expertise', models.TextField(blank=True, default=b'', help_text=b"Describe the reviewer's expertise in this team's area", max_length=2048, verbose_name=b"Reviewer's expertise in this team's area")), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('team', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ], options={ 'verbose_name_plural': 'reviewer settings', }, - bases=(models.Model,), ), migrations.CreateModel( name='ReviewRequest', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('old_id', models.IntegerField(help_text=b'ID in previous review system', null=True, blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('old_id', models.IntegerField(blank=True, help_text=b'ID in previous review system', null=True)), ('time', models.DateTimeField(default=datetime.datetime.now)), ('deadline', models.DateField()), - ('requested_rev', models.CharField(help_text=b'Fill in if a specific revision is to be reviewed, e.g. 02', max_length=16, verbose_name=b'requested revision', blank=True)), - ('reviewed_rev', models.CharField(max_length=16, verbose_name=b'reviewed revision', blank=True)), - ('doc', models.ForeignKey(related_name='reviewrequest_set', to='doc.Document')), - ('requested_by', models.ForeignKey(to='person.Person')), - ('result', models.ForeignKey(blank=True, to='name.ReviewResultName', null=True)), - ('review', models.OneToOneField(null=True, blank=True, to='doc.Document')), - ('reviewer', models.ForeignKey(blank=True, to='person.Email', null=True)), - ('state', models.ForeignKey(to='name.ReviewRequestStateName')), - ('team', models.ForeignKey(to='group.Group')), - ('type', models.ForeignKey(to='name.ReviewTypeName')), + ('requested_rev', models.CharField(blank=True, help_text=b'Fill in if a specific revision is to be reviewed, e.g. 02', max_length=16, verbose_name=b'requested revision')), + ('comment', models.TextField(blank=True, default=b'', help_text=b'Provide any additional information to show to the review team secretary and reviewer', max_length=2048, verbose_name=b"Requester's comments and instructions")), + ('reviewed_rev', models.CharField(blank=True, max_length=16, verbose_name=b'reviewed revision')), + ('doc', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reviewrequest_set', to='doc.Document')), + ('requested_by', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('result', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='name.ReviewResultName')), + ('review', ietf.utils.models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), + ('reviewer', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Email')), + ('state', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.ReviewRequestStateName')), + ('team', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('type', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.ReviewTypeName')), + ], + ), + migrations.CreateModel( + name='ReviewSecretarySettings', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('remind_days_before_deadline', models.IntegerField(blank=True, help_text=b"To get an email reminder in case a reviewer forgets to do an assigned review, enter the number of days before review deadline you want to receive it. Clear the field if you don't want a reminder.", null=True)), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('team', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ], options={ + 'verbose_name_plural': 'review secretary settings', + }, + ), + migrations.CreateModel( + name='ReviewTeamSettings', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('autosuggest', models.BooleanField(default=True, verbose_name=b'Automatically suggest possible review requests')), + ('group', ietf.utils.models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('review_results', models.ManyToManyField(default=ietf.review.models.get_default_review_results, to='name.ReviewResultName')), + ('review_types', models.ManyToManyField(default=ietf.review.models.get_default_review_types, to='name.ReviewTypeName')), + ], + options={ + 'verbose_name': 'Review team settings', + 'verbose_name_plural': 'Review team settings', }, - bases=(models.Model,), ), migrations.CreateModel( name='ReviewWish', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), - ('doc', models.ForeignKey(to='doc.Document')), - ('person', models.ForeignKey(to='person.Person')), - ('team', models.ForeignKey(to='group.Group')), + ('doc', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('team', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ], options={ 'verbose_name_plural': 'review wishes', }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='TypeUsedInReviewTeam', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('team', models.ForeignKey(to='group.Group')), - ('type', models.ForeignKey(to='name.ReviewTypeName')), - ], - options={ - 'verbose_name': 'review type used in team setting', - 'verbose_name_plural': 'review type used in team settings', - }, - bases=(models.Model,), ), migrations.CreateModel( name='UnavailablePeriod', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('start_date', models.DateField(default=datetime.date.today, help_text=b"Choose the start date so that you can still do a review if it's assigned just before the start date - this usually means you should mark yourself unavailable for assignment some time before you are actually away.")), - ('end_date', models.DateField(help_text=b'Leaving the end date blank means that the period continues indefinitely. You can end it later.', null=True, blank=True)), - ('availability', models.CharField(max_length=30, choices=[(b'canfinish', b'Can do follow-ups'), (b'unavailable', b'Completely unavailable')])), - ('person', models.ForeignKey(to='person.Person')), - ('team', models.ForeignKey(to='group.Group')), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('start_date', models.DateField(default=datetime.date.today, help_text=b"Choose the start date so that you can still do a review if it's assigned just before the start date - this usually means you should mark yourself unavailable for assignment some time before you are actually away.", null=True)), + ('end_date', models.DateField(blank=True, help_text=b'Leaving the end date blank means that the period continues indefinitely. You can end it later.', null=True)), + ('availability', models.CharField(choices=[(b'canfinish', b'Can do follow-ups'), (b'unavailable', b'Completely unavailable')], max_length=30)), + ('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), + ('team', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')), ], - options={ - }, - bases=(models.Model,), ), ] diff --git a/ietf/review/migrations/0002_auto_20161017_1218.py b/ietf/review/migrations/0002_auto_20161017_1218.py deleted file mode 100644 index 03901a129..000000000 --- a/ietf/review/migrations/0002_auto_20161017_1218.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import datetime - - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='unavailableperiod', - name='start_date', - field=models.DateField(default=datetime.date.today, help_text=b"Choose the start date so that you can still do a review if it's assigned just before the start date - this usually means you should mark yourself unavailable for assignment some time before you are actually away.", null=True), - preserve_default=True, - ), - ] diff --git a/ietf/review/migrations/0003_auto_20161018_0254.py b/ietf/review/migrations/0003_auto_20161018_0254.py deleted file mode 100644 index 618b2b231..000000000 --- a/ietf/review/migrations/0003_auto_20161018_0254.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0002_auto_20161017_1218'), - ] - - operations = [ - migrations.AlterField( - model_name='reviewersettings', - name='min_interval', - field=models.IntegerField(blank=True, null=True, verbose_name=b'Can review at most', choices=[(7, b'Once per week'), (14, b'Once per fortnight'), (30, b'Once per month'), (61, b'Once per two months'), (91, b'Once per quarter')]), - preserve_default=True, - ), - ] diff --git a/ietf/review/migrations/0004_reviewsecretarysettings.py b/ietf/review/migrations/0004_reviewsecretarysettings.py deleted file mode 100644 index e58ce41d4..000000000 --- a/ietf/review/migrations/0004_reviewsecretarysettings.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0014_auto_20160613_0751'), - ('group', '0009_auto_20150930_0758'), - ('review', '0003_auto_20161018_0254'), - ] - - operations = [ - migrations.CreateModel( - name='ReviewSecretarySettings', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('remind_days_before_deadline', models.IntegerField(help_text=b"To get an email reminder in case an assigned review gets near its deadline, enter the number of days before a review deadline you want to receive it. Clear the field if you don't want a reminder.", null=True, blank=True)), - ('person', models.ForeignKey(to='person.Person')), - ('team', models.ForeignKey(to='group.Group')), - ], - options={ - 'verbose_name_plural': 'review secretary settings', - }, - bases=(models.Model,), - ), - ] diff --git a/ietf/review/migrations/0005_auto_20161130_0628.py b/ietf/review/migrations/0005_auto_20161130_0628.py deleted file mode 100644 index 2932637f4..000000000 --- a/ietf/review/migrations/0005_auto_20161130_0628.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0004_reviewsecretarysettings'), - ] - - operations = [ - migrations.AlterField( - model_name='reviewersettings', - name='remind_days_before_deadline', - field=models.IntegerField(help_text=b"To get an email reminder in case you forget to do an assigned review, enter the number of days before review deadline you want to receive it. Clear the field if you don't want a reminder.", null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='reviewsecretarysettings', - name='remind_days_before_deadline', - field=models.IntegerField(help_text=b"To get an email reminder in case a reviewer forgets to do an assigned review, enter the number of days before review deadline you want to receive it. Clear the field if you don't want a reminder.", null=True, blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/review/migrations/0006_auto_20161209_0436.py b/ietf/review/migrations/0006_auto_20161209_0436.py deleted file mode 100644 index 713195dd1..000000000 --- a/ietf/review/migrations/0006_auto_20161209_0436.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import ietf.utils.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0005_auto_20161130_0628'), - ] - - operations = [ - migrations.AlterField( - model_name='reviewersettings', - name='filter_re', - field=models.CharField(blank=True, help_text=b'Draft names matching this regular expression should not be assigned', max_length=255, verbose_name=b'Filter regexp', validators=[ietf.utils.validators.RegexStringValidator()]), - preserve_default=True, - ), - ] diff --git a/ietf/review/migrations/0007_reviewteamsettings.py b/ietf/review/migrations/0007_reviewteamsettings.py deleted file mode 100644 index 14e5cd5f9..000000000 --- a/ietf/review/migrations/0007_reviewteamsettings.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import ietf.review.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0016_auto_20161013_1010'), - ('group', '0009_auto_20150930_0758'), - ('review', '0006_auto_20161209_0436'), - ] - - operations = [ - migrations.CreateModel( - name='ReviewTeamSettings', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('autosuggest', models.BooleanField(default=True, verbose_name=b'Automatically suggest possible review requests')), - ('group', models.OneToOneField(to='group.Group')), - ('review_results', models.ManyToManyField(default=ietf.review.models.get_default_review_results, to='name.ReviewResultName')), - ('review_types', models.ManyToManyField(default=ietf.review.models.get_default_review_types, to='name.ReviewTypeName')), - ], - options={ - 'verbose_name': 'Review team settings', - 'verbose_name_plural': 'Review team settings', - }, - ), - ] diff --git a/ietf/review/migrations/0008_populate_reviewteamsettings.py b/ietf/review/migrations/0008_populate_reviewteamsettings.py deleted file mode 100644 index 098fbb00f..000000000 --- a/ietf/review/migrations/0008_populate_reviewteamsettings.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def forward(apps, schema_editor): - ReviewTeamSettings = apps.get_model('review','ReviewTeamSettings') - ResultUsedInReviewTeam = apps.get_model('review','ResultUsedInReviewTeam') - TypeUsedInReviewTeam = apps.get_model('review','TypeUsedInReviewTeam') - - for group_id in ResultUsedInReviewTeam.objects.values_list('team',flat=True).distinct(): - rts = ReviewTeamSettings.objects.create(group_id=group_id) - rts.review_types = TypeUsedInReviewTeam.objects.filter(team_id=group_id).values_list('type',flat=True).distinct() - rts.review_results = ResultUsedInReviewTeam.objects.filter(team_id=group_id).values_list('result',flat=True).distinct() - - -def reverse(apps, schema_editor): - ReviewTeamSettings = apps.get_model('review','ReviewTeamSettings') - ReviewTeamSettings.objects.all().delete() - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0007_reviewteamsettings'), - ] - - operations = [ - migrations.RunPython(forward, reverse) - ] diff --git a/ietf/review/migrations/0009_reviewrequest_comment.py b/ietf/review/migrations/0009_reviewrequest_comment.py deleted file mode 100644 index c603b538d..000000000 --- a/ietf/review/migrations/0009_reviewrequest_comment.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0008_populate_reviewteamsettings'), - ] - - operations = [ - migrations.AddField( - model_name='reviewrequest', - name='comment', - field=models.TextField(default=b'', help_text=b'Provide any additional information to show to the review team secretary and reviewer', max_length=2048, verbose_name=b"Requester's comments and instructions", blank=True), - ), - ] diff --git a/ietf/review/migrations/0010_auto_20161214_1537.py b/ietf/review/migrations/0010_auto_20161214_1537.py deleted file mode 100644 index 4807e21d5..000000000 --- a/ietf/review/migrations/0010_auto_20161214_1537.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0009_reviewrequest_comment'), - ] - - operations = [ - migrations.RemoveField( - model_name='resultusedinreviewteam', - name='result', - ), - migrations.RemoveField( - model_name='resultusedinreviewteam', - name='team', - ), - migrations.RemoveField( - model_name='typeusedinreviewteam', - name='team', - ), - migrations.RemoveField( - model_name='typeusedinreviewteam', - name='type', - ), - migrations.DeleteModel( - name='ResultUsedInReviewTeam', - ), - migrations.DeleteModel( - name='TypeUsedInReviewTeam', - ), - ] diff --git a/ietf/review/migrations/0011_add_review_doc_authors.py b/ietf/review/migrations/0011_add_review_doc_authors.py deleted file mode 100644 index 891b2bfa6..000000000 --- a/ietf/review/migrations/0011_add_review_doc_authors.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-03 10:09 -from __future__ import unicode_literals - -from django.db import migrations - -import debug # pyflakes:ignore - -def email(person): - e = person.email_set.filter(primary=True).first() - if not e: - e = person.email_set.filter(active=True).order_by("-time").first() - return e - -def forwards(apps, schema_editor): - ReviewRequest = apps.get_model('review', 'ReviewRequest') - DocumentAuthor = apps.get_model('doc', 'DocumentAuthor') - for r in ReviewRequest.objects.filter(review__isnull=False): - if r.review and not r.review.authors.exists(): - role = r.reviewer.person.role_set.filter(group=r.team, name='reviewer').first() - if role: - author = role.email - else: - author = email(r.reviewer.person) - DocumentAuthor.objects.create(document=r.review, author=author) - -def backwards(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0010_auto_20161214_1537'), - ] - - operations = [ - migrations.RunPython(forwards, backwards) - ] diff --git a/ietf/review/migrations/0012_reviewersettings_expertise.py b/ietf/review/migrations/0012_reviewersettings_expertise.py deleted file mode 100644 index 342266af7..000000000 --- a/ietf/review/migrations/0012_reviewersettings_expertise.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-06-06 00:29 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('review', '0011_add_review_doc_authors'), - ] - - operations = [ - migrations.AddField( - model_name='reviewersettings', - name='expertise', - field=models.TextField(blank=True, default=b'', help_text=b"Describe the reviewer's expertise in this team's area", max_length=2048, verbose_name=b"Reviewer's expertise in this team's area"), - ), - ] diff --git a/ietf/secr/proceedings/migrations/0001_initial.py b/ietf/secr/proceedings/migrations/0001_initial.py index 3b444f9fb..cb55ea290 100644 --- a/ietf/secr/proceedings/migrations/0001_initial.py +++ b/ietf/secr/proceedings/migrations/0001_initial.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): + initial = True + dependencies = [ ('meeting', '0001_initial'), ] @@ -14,7 +17,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Registration', fields=[ - ('rsn', models.AutoField(serialize=False, primary_key=True)), + ('rsn', models.AutoField(primary_key=True, serialize=False)), ('fname', models.CharField(max_length=255)), ('lname', models.CharField(max_length=255)), ('company', models.CharField(max_length=255)), @@ -23,7 +26,6 @@ class Migration(migrations.Migration): options={ 'db_table': 'registrations', }, - bases=(models.Model,), ), migrations.CreateModel( name='InterimMeeting', @@ -31,6 +33,7 @@ class Migration(migrations.Migration): ], options={ 'proxy': True, + 'indexes': [], }, bases=('meeting.meeting',), ), diff --git a/ietf/stats/migrations/0001_initial.py b/ietf/stats/migrations/0001_initial.py index 19f1b49a9..a83449658 100644 --- a/ietf/stats/migrations/0001_initial.py +++ b/ietf/stats/migrations/0001_initial.py @@ -1,39 +1,63 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models class Migration(migrations.Migration): + initial = True + dependencies = [ - ('name', '0023_add_country_continent_names'), + ('meeting', '0001_initial'), + ('name', '0001_initial'), + ('person', '0001_initial'), ] operations = [ migrations.CreateModel( name='AffiliationAlias', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('alias', models.CharField(help_text=b"Note that aliases will be matched case-insensitive and both before and after some clean-up.", max_length=255, unique=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('alias', models.CharField(help_text=b'Note that aliases will be matched case-insensitive and both before and after some clean-up.', max_length=255, unique=True)), ('name', models.CharField(max_length=255)), ], - options={'verbose_name_plural': 'affiliation aliases'}, + options={ + 'verbose_name_plural': 'affiliation aliases', + }, ), migrations.CreateModel( name='AffiliationIgnoredEnding', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('ending', models.CharField(help_text=b"Regexp with ending, e.g. 'Inc\\.?' - remember to escape .!", max_length=255)), ], ), migrations.CreateModel( name='CountryAlias', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('alias', models.CharField(help_text=b"Note that lower-case aliases are matched case-insensitive while aliases with at least one uppercase letter is matched case-sensitive. So 'United States' is best entered as 'united states' so it both matches 'United States' and 'United states' and 'UNITED STATES', whereas 'US' is best entered as 'US' so it doesn't accidentally match an ordinary word like 'us'.", max_length=255)), - ('country', models.ForeignKey(to='name.CountryName', max_length=255)), + ('country', ietf.utils.models.ForeignKey(max_length=255, on_delete=django.db.models.deletion.CASCADE, to='name.CountryName')), + ], + options={ + 'verbose_name_plural': 'country aliases', + }, + ), + migrations.CreateModel( + name='MeetingRegistration', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(max_length=255)), + ('last_name', models.CharField(max_length=255)), + ('affiliation', models.CharField(blank=True, max_length=255)), + ('country_code', models.CharField(max_length=2)), + ('email', models.EmailField(blank=True, max_length=254, null=True)), + ('meeting', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting')), + ('person', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Person')), ], - options={'verbose_name_plural': 'country aliases'}, ), ] diff --git a/ietf/stats/migrations/0002_add_initial_aliases.py b/ietf/stats/migrations/0002_add_initial_aliases.py deleted file mode 100644 index d317267d8..000000000 --- a/ietf/stats/migrations/0002_add_initial_aliases.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -def add_affiliation_info(apps, schema_editor): - AffiliationAlias = apps.get_model("stats", "AffiliationAlias") - - AffiliationAlias.objects.get_or_create(alias="cisco", name="Cisco Systems") - AffiliationAlias.objects.get_or_create(alias="cisco system", name="Cisco Systems") - AffiliationAlias.objects.get_or_create(alias="cisco systems (india) private limited", name="Cisco Systems") - AffiliationAlias.objects.get_or_create(alias="cisco systems india pvt", name="Cisco Systems") - - AffiliationIgnoredEnding = apps.get_model("stats", "AffiliationIgnoredEnding") - AffiliationIgnoredEnding.objects.get_or_create(ending="LLC\.?") - AffiliationIgnoredEnding.objects.get_or_create(ending="Ltd\.?") - AffiliationIgnoredEnding.objects.get_or_create(ending="Inc\.?") - AffiliationIgnoredEnding.objects.get_or_create(ending="GmbH\.?") - - CountryAlias = apps.get_model("stats", "CountryAlias") - for iso_country_code in ['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', - 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', - 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', - 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', - 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', - 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', - 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', - 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', - 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', - 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', - 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', - 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', - 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', - 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', - 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', - 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', - 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', - 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']: - CountryAlias.objects.get_or_create(alias=iso_country_code, country_id=iso_country_code) - - CountryAlias.objects.get_or_create(alias="russian federation", country_id="RU") - CountryAlias.objects.get_or_create(alias="p. r. china", country_id="CN") - CountryAlias.objects.get_or_create(alias="p.r. china", country_id="CN") - CountryAlias.objects.get_or_create(alias="p.r.china", country_id="CN") - CountryAlias.objects.get_or_create(alias="p.r china", country_id="CN") - CountryAlias.objects.get_or_create(alias="p.r. of china", country_id="CN") - CountryAlias.objects.get_or_create(alias="PRC", country_id="CN") - CountryAlias.objects.get_or_create(alias="P.R.C", country_id="CN") - CountryAlias.objects.get_or_create(alias="P.R.C.", country_id="CN") - CountryAlias.objects.get_or_create(alias="beijing", country_id="CN") - CountryAlias.objects.get_or_create(alias="shenzhen", country_id="CN") - CountryAlias.objects.get_or_create(alias="R.O.C.", country_id="TW") - CountryAlias.objects.get_or_create(alias="usa", country_id="US") - CountryAlias.objects.get_or_create(alias="UAS", country_id="US") - CountryAlias.objects.get_or_create(alias="USA.", country_id="US") - CountryAlias.objects.get_or_create(alias="u.s.a.", country_id="US") - CountryAlias.objects.get_or_create(alias="u. s. a.", country_id="US") - CountryAlias.objects.get_or_create(alias="u.s.a", country_id="US") - CountryAlias.objects.get_or_create(alias="u.s.", country_id="US") - CountryAlias.objects.get_or_create(alias="U.S", country_id="GB") - CountryAlias.objects.get_or_create(alias="US of A", country_id="US") - CountryAlias.objects.get_or_create(alias="united sates", country_id="US") - CountryAlias.objects.get_or_create(alias="united state", country_id="US") - CountryAlias.objects.get_or_create(alias="united states", country_id="US") - CountryAlias.objects.get_or_create(alias="unites states", country_id="US") - CountryAlias.objects.get_or_create(alias="texas", country_id="US") - CountryAlias.objects.get_or_create(alias="UK", country_id="GB") - CountryAlias.objects.get_or_create(alias="united kingcom", country_id="GB") - CountryAlias.objects.get_or_create(alias="great britain", country_id="GB") - CountryAlias.objects.get_or_create(alias="england", country_id="GB") - CountryAlias.objects.get_or_create(alias="U.K.", country_id="GB") - CountryAlias.objects.get_or_create(alias="U.K", country_id="GB") - CountryAlias.objects.get_or_create(alias="Uk", country_id="GB") - CountryAlias.objects.get_or_create(alias="scotland", country_id="GB") - CountryAlias.objects.get_or_create(alias="republic of korea", country_id="KR") - CountryAlias.objects.get_or_create(alias="korea", country_id="KR") - CountryAlias.objects.get_or_create(alias="korea rep", country_id="KR") - CountryAlias.objects.get_or_create(alias="korea (the republic of)", country_id="KR") - CountryAlias.objects.get_or_create(alias="the netherlands", country_id="NL") - CountryAlias.objects.get_or_create(alias="netherland", country_id="NL") - CountryAlias.objects.get_or_create(alias="danmark", country_id="DK") - CountryAlias.objects.get_or_create(alias="sweeden", country_id="SE") - CountryAlias.objects.get_or_create(alias="swede", country_id="SE") - CountryAlias.objects.get_or_create(alias="belgique", country_id="BE") - CountryAlias.objects.get_or_create(alias="madrid", country_id="ES") - CountryAlias.objects.get_or_create(alias="espana", country_id="ES") - CountryAlias.objects.get_or_create(alias="hellas", country_id="GR") - CountryAlias.objects.get_or_create(alias="gemany", country_id="DE") - CountryAlias.objects.get_or_create(alias="deutschland", country_id="DE") - CountryAlias.objects.get_or_create(alias="italia", country_id="IT") - CountryAlias.objects.get_or_create(alias="isreal", country_id="IL") - CountryAlias.objects.get_or_create(alias="tel aviv", country_id="IL") - CountryAlias.objects.get_or_create(alias="UAE", country_id="AE") - CountryAlias.objects.get_or_create(alias="grand-duchy of luxembourg", country_id="LU") - CountryAlias.objects.get_or_create(alias="brasil", country_id="BR") - - -class Migration(migrations.Migration): - - dependencies = [ - ('stats', '0001_initial'), - ] - - operations = [ - migrations.RunPython(add_affiliation_info, migrations.RunPython.noop) - ] diff --git a/ietf/stats/migrations/0003_registration_registrationstats.py b/ietf/stats/migrations/0003_registration_registrationstats.py deleted file mode 100644 index 46bc6a84e..000000000 --- a/ietf/stats/migrations/0003_registration_registrationstats.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.6 on 2017-03-30 14:38 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('person', '0015_clean_primary'), - ('meeting', '0047_import_shared_audio_files'), - ('stats', '0002_add_initial_aliases'), - ] - - operations = [ - migrations.CreateModel( - name='MeetingRegistration', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('first_name', models.CharField(max_length=255)), - ('last_name', models.CharField(max_length=255)), - ('affiliation', models.CharField(blank=True, max_length=255)), - ('country_code', models.CharField(max_length=2)), - ('meeting', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='meeting.Meeting')), - ('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Person')), - ], - ), - ] diff --git a/ietf/stats/migrations/0004_meetingregistration_email.py b/ietf/stats/migrations/0004_meetingregistration_email.py deleted file mode 100644 index 8956303df..000000000 --- a/ietf/stats/migrations/0004_meetingregistration_email.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-06-07 05:26 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('stats', '0003_registration_registrationstats'), - ] - - operations = [ - migrations.AddField( - model_name='meetingregistration', - name='email', - field=models.EmailField(blank=True, max_length=254, null=True), - ), - ] diff --git a/ietf/stats/migrations/0005_fix_registration_data.py b/ietf/stats/migrations/0005_fix_registration_data.py deleted file mode 100644 index 4568dc253..000000000 --- a/ietf/stats/migrations/0005_fix_registration_data.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-08-29 12:00 -from __future__ import unicode_literals - -from django.db import migrations -from django.db.models import Q - -def strip_spaces(apps, schema_editor): - MeetingRegistration = apps.get_model("stats", "MeetingRegistration") - for reg in MeetingRegistration.objects.filter(Q(first_name__startswith=' ') | - Q(first_name__endswith=' ')).distinct(): - reg.first_name = reg.first_name.strip() - reg.save() - - for reg in MeetingRegistration.objects.filter(Q(last_name__startswith=' ') | - Q(last_name__endswith=' ')).distinct(): - reg.last_name = reg.last_name.strip() - reg.save() - - for reg in MeetingRegistration.objects.filter(Q(affiliation__startswith=' ') | - Q(affiliation__endswith=' ')).distinct(): - reg.affiliation = reg.affiliation.strip() - reg.save() - - for reg in MeetingRegistration.objects.filter(Q(email__startswith=' ') | - Q(email__endswith=' ')).distinct(): - reg.email = reg.email.strip() - reg.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('stats', '0004_meetingregistration_email'), - ] - - operations = [ - migrations.RunPython(strip_spaces, migrations.RunPython.noop), - ] diff --git a/ietf/submit/migrations/0001_initial.py b/ietf/submit/migrations/0001_initial.py index c0ce16b38..1d85ccba4 100644 --- a/ietf/submit/migrations/0001_initial.py +++ b/ietf/submit/migrations/0001_initial.py @@ -1,73 +1,112 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations import datetime +from django.db import migrations, models +import django.db.models.deletion import ietf.utils.accesstoken +import ietf.utils.models +import jsonfield.fields class Migration(migrations.Migration): + initial = True + dependencies = [ + ('message', '0001_initial'), ('group', '0001_initial'), ('name', '0001_initial'), ('person', '0001_initial'), + ('doc', '0001_initial'), ] operations = [ migrations.CreateModel( name='Preapproval', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=255, db_index=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(db_index=True, max_length=255)), ('time', models.DateTimeField(default=datetime.datetime.now)), - ('by', models.ForeignKey(to='person.Person')), + ('by', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='Submission', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('remote_ip', models.CharField(max_length=100, blank=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('remote_ip', models.CharField(blank=True, max_length=100)), ('access_key', models.CharField(default=ietf.utils.accesstoken.generate_random_key, max_length=255)), - ('auth_key', models.CharField(max_length=255, blank=True)), - ('name', models.CharField(max_length=255, db_index=True)), - ('title', models.CharField(max_length=255, blank=True)), + ('auth_key', models.CharField(blank=True, max_length=255)), + ('name', models.CharField(db_index=True, max_length=255)), + ('title', models.CharField(blank=True, max_length=255)), ('abstract', models.TextField(blank=True)), - ('rev', models.CharField(max_length=3, blank=True)), - ('pages', models.IntegerField(null=True, blank=True)), - ('authors', models.TextField(help_text=b'List of author names and emails, one author per line, e.g. "John Doe <john@example.org>"', blank=True)), + ('rev', models.CharField(blank=True, max_length=3)), + ('pages', models.IntegerField(blank=True, null=True)), + ('words', models.IntegerField(blank=True, null=True)), + ('authors', jsonfield.fields.JSONField(default=list, help_text=b'List of authors with name, email, affiliation and country.')), ('note', models.TextField(blank=True)), - ('replaces', models.CharField(max_length=255, blank=True)), + ('replaces', models.CharField(blank=True, max_length=1000)), ('first_two_pages', models.TextField(blank=True)), - ('file_types', models.CharField(max_length=50, blank=True)), - ('file_size', models.IntegerField(null=True, blank=True)), - ('document_date', models.DateField(null=True, blank=True)), + ('file_types', models.CharField(blank=True, max_length=50)), + ('file_size', models.IntegerField(blank=True, null=True)), + ('document_date', models.DateField(blank=True, null=True)), ('submission_date', models.DateField(default=datetime.date.today)), - ('submitter', models.CharField(help_text=b'Name and email of submitter, e.g. "John Doe <john@example.org>"', max_length=255, blank=True)), - ('idnits_message', models.TextField(blank=True)), - ('group', models.ForeignKey(blank=True, to='group.Group', null=True)), - ('state', models.ForeignKey(to='name.DraftSubmissionStateName')), + ('submitter', models.CharField(blank=True, help_text=b'Name and email of submitter, e.g. "John Doe <john@example.org>".', max_length=255)), + ('draft', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='doc.Document')), + ('formal_languages', models.ManyToManyField(blank=True, help_text=b'Formal languages used in document', to='name.FormalLanguageName')), + ('group', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='group.Group')), + ('state', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DraftSubmissionStateName')), + ], + ), + migrations.CreateModel( + name='SubmissionCheck', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(default=datetime.datetime.now)), + ('checker', models.CharField(blank=True, max_length=256)), + ('passed', models.NullBooleanField(default=False)), + ('message', models.TextField(blank=True, null=True)), + ('errors', models.IntegerField(blank=True, default=None, null=True)), + ('warnings', models.IntegerField(blank=True, default=None, null=True)), + ('items', jsonfield.fields.JSONField(blank=True, default=b'{}', null=True)), + ('symbol', models.CharField(default=b'', max_length=64)), + ('submission', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checks', to='submit.Submission')), ], - options={ - }, - bases=(models.Model,), ), migrations.CreateModel( name='SubmissionEvent', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=datetime.datetime.now)), ('desc', models.TextField()), - ('by', models.ForeignKey(blank=True, to='person.Person', null=True)), - ('submission', models.ForeignKey(to='submit.Submission')), ], options={ 'ordering': ('-time', '-id'), }, - bases=(models.Model,), + ), + migrations.CreateModel( + name='SubmissionEmailEvent', + fields=[ + ('submissionevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='submit.SubmissionEvent')), + ('msgtype', models.CharField(max_length=25)), + ('in_reply_to', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='irtomanual', to='message.Message')), + ('message', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='manualevents', to='message.Message')), + ], + options={ + 'ordering': ['-time', '-id'], + }, + bases=('submit.submissionevent',), + ), + migrations.AddField( + model_name='submissionevent', + name='by', + field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Person'), + ), + migrations.AddField( + model_name='submissionevent', + name='submission', + field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='submit.Submission'), ), ] diff --git a/ietf/submit/migrations/0002_auto_20150430_0847.py b/ietf/submit/migrations/0002_auto_20150430_0847.py deleted file mode 100644 index 9fa60bc2d..000000000 --- a/ietf/submit/migrations/0002_auto_20150430_0847.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='submission', - name='authors', - field=models.TextField(help_text=b'List of author names and emails, one author per line, e.g. "John Doe <john@example.org>".', blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='submission', - name='submitter', - field=models.CharField(help_text=b'Name and email of submitter, e.g. "John Doe <john@example.org>".', max_length=255, blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/submit/migrations/0003_auto_20150713_1104.py b/ietf/submit/migrations/0003_auto_20150713_1104.py deleted file mode 100644 index 92054ee22..000000000 --- a/ietf/submit/migrations/0003_auto_20150713_1104.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0002_auto_20150430_0847'), - ] - - operations = [ - migrations.AlterField( - model_name='submission', - name='replaces', - field=models.CharField(max_length=1000, blank=True), - preserve_default=True, - ), - ] diff --git a/ietf/submit/migrations/0004_submissioncheck.py b/ietf/submit/migrations/0004_submissioncheck.py deleted file mode 100644 index ffe5870ca..000000000 --- a/ietf/submit/migrations/0004_submissioncheck.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import jsonfield - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0003_auto_20150713_1104'), - ] - - operations = [ - migrations.CreateModel( - name='SubmissionCheck', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('time', models.DateTimeField(default=None, auto_now=True)), - ('checker', models.CharField(max_length=256, blank=True)), - ('passed', models.NullBooleanField(default=False)), - ('message', models.TextField(null=True, blank=True)), - ('warnings', models.IntegerField(null=True, blank=True, default=None)), - ('errors', models.IntegerField(null=True, blank=True, default=None)), - ('items', jsonfield.JSONField(null=True, blank=True, default=b'{}')), - ('submission', models.ForeignKey(related_name='checks', to='submit.Submission')), - ], - options={ - }, - bases=(models.Model,), - ), - ] diff --git a/ietf/submit/migrations/0005_auto_20160227_0809.py b/ietf/submit/migrations/0005_auto_20160227_0809.py deleted file mode 100644 index 1d8d268ad..000000000 --- a/ietf/submit/migrations/0005_auto_20160227_0809.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import re - -from django.db import migrations - -def convert_to_submission_check(apps, schema_editor): - Submission = apps.get_model('submit','Submission') - SubmissionCheck = apps.get_model('submit','SubmissionCheck') - for s in Submission.objects.all(): - passed = re.search('\s+Summary:\s+0\s+|No nits found', s.idnits_message) != None - c = SubmissionCheck(submission=s, checker='idnits check', passed=passed, message=s.idnits_message) - c.save() - -def convert_from_submission_check(apps, schema_editor): - SubmissionCheck = apps.get_model('submit','SubmissionCheck') - for c in SubmissionCheck.objects.filter(checker='idnits check'): - c.submission.idnits_message = c.message - c.save() - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0004_submissioncheck'), - ] - - operations = [ - migrations.RunPython(convert_to_submission_check, convert_from_submission_check) - ] diff --git a/ietf/submit/migrations/0006_remove_submission_idnits_message.py b/ietf/submit/migrations/0006_remove_submission_idnits_message.py deleted file mode 100644 index 66f9c663b..000000000 --- a/ietf/submit/migrations/0006_remove_submission_idnits_message.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0005_auto_20160227_0809'), - ] - - operations = [ - migrations.RemoveField( - model_name='submission', - name='idnits_message', - ), - ] diff --git a/ietf/submit/migrations/0007_submission_draft.py b/ietf/submit/migrations/0007_submission_draft.py deleted file mode 100644 index 92fc98198..000000000 --- a/ietf/submit/migrations/0007_submission_draft.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0012_auto_20160207_0537'), - ('submit', '0006_remove_submission_idnits_message'), - ] - - operations = [ - migrations.AddField( - model_name='submission', - name='draft', - field=models.ForeignKey(null=True, blank=True, to='doc.Document'), - preserve_default=True, - ), - ] diff --git a/ietf/submit/migrations/0008_data_for_submission_draft_field.py b/ietf/submit/migrations/0008_data_for_submission_draft_field.py deleted file mode 100644 index 87556f38b..000000000 --- a/ietf/submit/migrations/0008_data_for_submission_draft_field.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from tqdm import tqdm -from django.db import migrations - -def populate_submission_draft(apps, schema_editor): - Submission = apps.get_model('submit', 'Submission') - Document = apps.get_model('doc', 'Document') - print("") - submissions = Submission.objects.filter(state_id='posted', draft=None) - count = submissions.count() - print(" Fixing up draft information for %s submissions" % count) - for submission in tqdm(submissions): - try: - draft = Document.objects.get(name=submission.name) - except Document.DoesNotExist: - print( " Failed to find %s-%s" % (submission.name, submission.rev)) - continue - submission.draft = draft - submission.save() - -def backward(apps, schema_editor): - pass # nothing to do - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0007_submission_draft'), - ] - - operations = [ - migrations.RunPython(populate_submission_draft, backward) - ] diff --git a/ietf/submit/migrations/0009_submissioncheck_symbol.py b/ietf/submit/migrations/0009_submissioncheck_symbol.py deleted file mode 100644 index e6f7178d2..000000000 --- a/ietf/submit/migrations/0009_submissioncheck_symbol.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0008_data_for_submission_draft_field'), - ] - - operations = [ - migrations.AddField( - model_name='submissioncheck', - name='symbol', - field=models.CharField(default=b'', max_length=64), - preserve_default=True, - ), - ] diff --git a/ietf/submit/migrations/0010_data_set_submission_check_symbol.py b/ietf/submit/migrations/0010_data_set_submission_check_symbol.py deleted file mode 100644 index 8bce3a132..000000000 --- a/ietf/submit/migrations/0010_data_set_submission_check_symbol.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from tqdm import tqdm -from django.db import migrations -from ietf.submit.checkers import DraftIdnitsChecker, DraftYangChecker - -def set_submission_check_symbol(apps, schema_editor): - SubmissionCheck = apps.get_model('submit','SubmissionCheck') - checks = SubmissionCheck.objects.all() - print("") - print(" Adding submission check symbol info to existing checks") - for s in tqdm(checks): - if not s.symbol: - if s.checker == "idnits check": - s.symbol = DraftIdnitsChecker.symbol - if s.checker == 'yang validation': - s.symbol = DraftYangChecker.symbol - s.save() - -def backward(apps, schema_editor): - SubmissionCheck = apps.get_model('submit','SubmissionCheck') - for s in SubmissionCheck.objects.all(): - if s.symbol != "": - s.symbol = "" - s.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0009_submissioncheck_symbol'), - ] - - operations = [ - migrations.RunPython(set_submission_check_symbol, backward) - ] diff --git a/ietf/submit/migrations/0011_submissionemail.py b/ietf/submit/migrations/0011_submissionemail.py deleted file mode 100644 index cc2dcd4bb..000000000 --- a/ietf/submit/migrations/0011_submissionemail.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('message', '__first__'), - ('submit', '0010_data_set_submission_check_symbol'), - ] - - operations = [ - migrations.CreateModel( - name='SubmissionEmailEvent', - fields=[ - ('submissionevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='submit.SubmissionEvent')), - ('msgtype', models.CharField(max_length=25)), - ('in_reply_to', models.ForeignKey(related_name='irtomanual', blank=True, to='message.Message', null=True)), - ('message', models.ForeignKey(related_name='manualevents', blank=True, to='message.Message', null=True)), - ], - options={ - 'ordering': ['-time', '-id'], - }, - bases=('submit.submissionevent',), - ), - ] diff --git a/ietf/submit/migrations/0012_auto_20160414_1902.py b/ietf/submit/migrations/0012_auto_20160414_1902.py deleted file mode 100644 index 76223743d..000000000 --- a/ietf/submit/migrations/0012_auto_20160414_1902.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - def add_draft_submission_state_name(apps, schema_editor): - # We can't import the model directly as it may be a newer - # version than this migration expects. We use the historical version. - DraftSubmissionStateName = apps.get_model("name", "DraftSubmissionStateName") - DraftSubmissionStateName.objects.create(slug="waiting-for-draft", - name="Manual Post Waiting for Draft", - desc="", - used=True, - order=8) - - def del_draft_submission_state_name(apps, schema_editor): - # We can't import the model directly as it may be a newer - # version than this migration expects. We use the historical version. - DraftSubmissionStateName = apps.get_model("name", "DraftSubmissionStateName") - DraftSubmissionStateName.objects.filter(slug="waiting-for-draft", - name="Manual Post Waiting for Draft", - desc="", - used=True, - order=8).delete() - - dependencies = [ - ('submit', '0011_submissionemail'), - ] - - operations = [ - migrations.RunPython(add_draft_submission_state_name, del_draft_submission_state_name), - ] diff --git a/ietf/submit/migrations/0013_auto_20160415_2120.py b/ietf/submit/migrations/0013_auto_20160415_2120.py deleted file mode 100644 index 99c1c1722..000000000 --- a/ietf/submit/migrations/0013_auto_20160415_2120.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from datetime import date - -from django.db import migrations -from ietf.submit.utils import remove_submission_files - - -class Migration(migrations.Migration): - def remove_old_submissions(apps, schema_editor): - """ - We'll remove any submissions awaiting manual post that are older - than a date provided here. - - These all showed up when we added the ability to list submissions - awaiting manual post and go back many years - """ - - # We can't import the model directly as it may be a newer - # version than this migration expects. We use the historical version. - before=date(2016, 3, 1) - Submission = apps.get_model("submit", "Submission") - DraftSubmissionStateName = apps.get_model("name", "DraftSubmissionStateName") - - cancelled = DraftSubmissionStateName.objects.get(slug="cancel") - for submission in Submission.objects.filter(state_id = "manual", submission_date__lt=before).distinct(): - submission.state = cancelled - submission.save() - - remove_submission_files(submission) - - def reverse(apps, schema_editor): - pass - - dependencies = [ - ('submit', '0012_auto_20160414_1902'), - ] - - operations = [ - migrations.RunPython(remove_old_submissions, reverse), - ] diff --git a/ietf/submit/migrations/0014_auto_20160627_1945.py b/ietf/submit/migrations/0014_auto_20160627_1945.py deleted file mode 100644 index 567235b43..000000000 --- a/ietf/submit/migrations/0014_auto_20160627_1945.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - def add_next_states(apps, schema_editor): - DraftSubmissionStateName = apps.get_model("name", "DraftSubmissionStateName") - - cancelled = DraftSubmissionStateName.objects.get(slug="cancel") - posted = DraftSubmissionStateName.objects.get(slug="posted") - waiting = DraftSubmissionStateName.objects.get(slug="waiting-for-draft") - - waiting.next_states.add(cancelled) - waiting.next_states.add(posted) - - def reverse(apps, schema_editor): - DraftSubmissionStateName = apps.get_model("name", "DraftSubmissionStateName") - - try: - waiting = DraftSubmissionStateName.objects.get(slug="waiting-for-draft") - try: - cancelled = DraftSubmissionStateName.objects.get(slug="cancel") - waiting.next_states.remove(cancelled) - except DraftSubmissionStateName.DoesNotExist: - pass - try: - posted = DraftSubmissionStateName.objects.get(slug="posted") - waiting.next_states.remove(posted) - except DraftSubmissionStateName.DoesNotExist: - pass - except DraftSubmissionStateName.DoesNotExist: - pass - - dependencies = [ - ('submit', '0013_auto_20160415_2120'), - ] - - operations = [ - migrations.RunPython(add_next_states, reverse), - ] diff --git a/ietf/submit/migrations/0015_fix_bad_submission_docevents.py b/ietf/submit/migrations/0015_fix_bad_submission_docevents.py deleted file mode 100644 index 505130e9a..000000000 --- a/ietf/submit/migrations/0015_fix_bad_submission_docevents.py +++ /dev/null @@ -1,58 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -import debug # pyflakes:ignore - -verbose = False -def note(s): - if verbose: - print(s) - -class Migration(migrations.Migration): - - def clean_up_bad_docevent_dates(apps, schema_editor): - DocEvent = apps.get_model('doc', 'DocEvent') - events = DocEvent.objects.filter(time__gt='2016-09-10', doc__type='draft').order_by('id') - docs = set() - for e in events: - docs.add(e.doc) - for doc in docs: - docevents = events.filter(doc=doc) - prev = docevents.first() - doc_shown = False - prev_shown = False - new_rev_msgs = [] - for e in docevents: - if e.type == 'new_revision': - new_rev_msgs.append(e.desc) - if e.time < prev.time: - if not doc_shown: - note("\n%s:" % doc.name) - doc_shown = True - if not prev_shown: - note("\n ---- %s: %-14s %s" % (prev.time, prev.type, prev.desc)) - prev_shown = True - note((u" bad: %s: %-14s %s" % (e.time, e.type, e.desc)).encode('utf8')) - if e.type == 'new_revision' and e.desc in new_rev_msgs: - note(" * deleting duplicate new_revision event") - e.newrevisiondocevent.delete() - else: - note((u" * fixing time of event %s %s" % (e.time, e.desc)).encode('utf8')) - e.time = prev.time - e.save() - else: - prev = e - prev_shown = False - - def noop(apps, schema_editor): - pass - - dependencies = [ - ('submit', '0014_auto_20160627_1945'), - ] - - operations = [ - migrations.RunPython(clean_up_bad_docevent_dates, noop) - ] diff --git a/ietf/submit/migrations/0016_fix_duplicate_upload_docevents.py b/ietf/submit/migrations/0016_fix_duplicate_upload_docevents.py deleted file mode 100644 index 386a81758..000000000 --- a/ietf/submit/migrations/0016_fix_duplicate_upload_docevents.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - -import debug # pyflakes:ignore - -verbose = False -def note(s): - if verbose: - print(s) - - -def clean_up_duplicate_upload_docevents(apps, schema_editor): - DocEvent = apps.get_model('doc', 'DocEvent') - DocHistory = apps.get_model('doc', 'DocHistory') - - def get_dochistory(e): - return DocHistory.objects.filter(time__lte=e.time,doc__name=e.doc.name).order_by('-time', '-pk').first() - - def rev(e): - if hasattr(e, 'newrevisiondocevent'): - return e.newrevisiondocevent.rev - else: - h = get_dochistory(e) - if h: - return h.rev - else: - return " " - - events = DocEvent.objects.filter(time__gt='2016-09-10', doc__type='draft', desc='Uploaded new revision').order_by('id') - docs = set() - for e in events: - docs.add(e.doc) - for doc in docs: - note("\n%s" % doc.name) - docevents = list(events.filter(doc=doc)) - prev = docevents[0] - for i, event in enumerate(docevents): - if rev(event) != rev(prev): - note("") - if event.time < prev.time: - print( " *** Timestamp discrepancy:") - note((u" %6d %s %-20s %s %s" % (event.id, event.time, event.by.name[:24], rev(event), event.desc[:64].replace('\n',''), )).encode('utf-8')) - if event.by.name == '(System)': - for j in range(i+1, len(docevents)): - next = docevents[j] - if rev(next) == rev(event): - note((u" Deleting event %6d %s %-20s %s" % (event.id, event.time, event.by.name[:24], rev(event), )).encode('utf-8')) - event.delete() - break - prev = event - return False - -def noop(apps, schema_editor): - pass - - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0015_fix_bad_submission_docevents'), - ] - - operations = [ - migrations.RunPython(clean_up_duplicate_upload_docevents, noop) - ] diff --git a/ietf/submit/migrations/0017_auto_20161207_1046.py b/ietf/submit/migrations/0017_auto_20161207_1046.py deleted file mode 100644 index 9b00cabda..000000000 --- a/ietf/submit/migrations/0017_auto_20161207_1046.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0016_fix_duplicate_upload_docevents'), - ] - - operations = [ - migrations.AlterField( - model_name='submissioncheck', - name='time', - field=models.DateTimeField(auto_now=True), - ), - ] diff --git a/ietf/submit/migrations/0018_fix_more_bad_submission_docevents.py b/ietf/submit/migrations/0018_fix_more_bad_submission_docevents.py deleted file mode 100644 index 7af94f8a4..000000000 --- a/ietf/submit/migrations/0018_fix_more_bad_submission_docevents.py +++ /dev/null @@ -1,125 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-03-04 11:59 -from __future__ import unicode_literals - -import datetime -import sys -from tqdm import tqdm - -from django.db import migrations - -import debug # pyflakes:ignore - -rev_fix_desc = [ - "Uploaded new revision", - "Request for posting confirmation", - "New version approved", - "Posted submission manually", -] - -time_fix_desc = rev_fix_desc + [ - "New version available", -] - -untouchable_type = ['new_revision', ] -untouchable_desc = [ - "IANA Action state changed", - "IANA Review state changed", - "RFC Editor state changed", -] - -name_shown = False - -def ename(event): - return u"event #%d %s %s by %s at %s" % (event.pk, event.doc.name, event.get_type_display().lower(), event.by.name, event.time) - -def change_rev(e, r): - global name_shown - if not name_shown: - #debug.say("") - #debug.show('e.doc.name') - name_shown = True - #debug.say('Changing rev %s -> %s for %s' % (e.rev, r.rev, ename(e))) - e.rev = r.rev - e.save() - -def forwards(apps, schema_editor): - global name_shown - DocEvent = apps.get_model('doc', 'DocEvent') - events = DocEvent.objects.filter(time__gt='2016-09-10', time__lt='2016-10-04', doc__type='draft').order_by('id') - #debug.say('') - #debug.show('events.count()') - docs = set() - for e in events: - docs.add(e.doc) - sys.stdout.write('\n') - for doc in tqdm(docs): - name_shown = False - if events.filter(doc=doc, type='new_revision').exists(): - # first scan from past towards present and fix up time: - docevents = DocEvent.objects.filter(doc=doc).order_by('id') - prev = docevents.first() - for event in docevents: - # review_request-related events may have out-of-order times - # because of import of historical data: - if event.time < prev.time and not 'review_request' in event.type: - for desc_start in time_fix_desc: - if event.desc.startswith(desc_start): - if not name_shown: - #debug.say("") - #debug.show('doc.name') - name_shown = True - #debug.say("Fixing up time -> %s for %s" % (prev.time, ename(event))) - event.time = prev.time - event.save() - break - else: - if event.type in untouchable_type: - break - for desc_start in untouchable_desc: - if event.desc.startswith(desc_start): - break - else: - #debug.say("** Out of order time for event %s" % (ename(event),)) - pass - prev = event - # - # then scan from present towards past and fix up revision: - docevents = DocEvent.objects.filter(doc=doc).order_by('-id') - seen = None - for event in docevents: - if event.type == 'new_revision': - if seen and event.rev == seen.rev: - if (seen.time - event.time) < datetime.timedelta(seconds=60): - #debug.say("Two new_revision events with the same rev: %s on %s and %s. Deleting the first." % (event.rev, seen.time, event.time)) - event.delete() - else: - #debug.say("** Two new_revision events with the same rev: %s on %s and %s. Differnt time, not deleting." % (event.rev, seen.time, event.time)) - pass - else: - seen = event - else: - pass - for desc_start in rev_fix_desc: - if event.desc.startswith(desc_start) and seen and event.rev != seen.rev: - if (seen.time-event.time) < datetime.timedelta(hours=2): # 2 hours is a bit arbitrary - change_rev(event, seen) - break - elif name_shown: - #debug.say('Skipping change %s -> %s (at %s) for %s ' % (event.rev, seen.rev, seen.time, ename(event), )) - pass - else: - pass - -def backwards(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0017_auto_20161207_1046'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/submit/migrations/0019_add_formal_languages_and_words.py b/ietf/submit/migrations/0019_add_formal_languages_and_words.py deleted file mode 100644 index fd2ba1164..000000000 --- a/ietf/submit/migrations/0019_add_formal_languages_and_words.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('name', '0021_add_formlang_names'), - ('submit', '0018_fix_more_bad_submission_docevents'), - ] - - operations = [ - migrations.AddField( - model_name='submission', - name='formal_languages', - field=models.ManyToManyField(help_text=b'Formal languages used in document', to='name.FormalLanguageName', blank=True), - ), - migrations.AddField( - model_name='submission', - name='words', - field=models.IntegerField(null=True, blank=True), - ), - ] diff --git a/ietf/submit/migrations/0020_authors_as_jsonfield.py b/ietf/submit/migrations/0020_authors_as_jsonfield.py deleted file mode 100644 index 2d8b41eca..000000000 --- a/ietf/submit/migrations/0020_authors_as_jsonfield.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations -import jsonfield.fields - -def parse_email_line(line): - """Split line on the form 'Some Name '""" - import re - m = re.match("([^<]+) <([^>]+)>$", line) - if m: - return dict(name=m.group(1), email=m.group(2)) - else: - return dict(name=line, email="") - -def parse_authors(author_lines): - res = [] - for line in author_lines.replace("\r", "").split("\n"): - line = line.strip() - if line: - res.append(parse_email_line(line)) - return res - -def convert_author_lines_to_json(apps, schema_editor): - import json - - Submission = apps.get_model("submit", "Submission") - for s in Submission.objects.all().iterator(): - Submission.objects.filter(pk=s.pk).update(authors=json.dumps(parse_authors(s.authors))) - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0019_add_formal_languages_and_words'), - ] - - operations = [ - migrations.RunPython(convert_author_lines_to_json, migrations.RunPython.noop), - migrations.AlterField( - model_name='submission', - name='authors', - field=jsonfield.fields.JSONField(default=list, help_text=b'List of authors with name, email, affiliation and country.'), - ), - ] diff --git a/ietf/submit/migrations/0021_submissioncheck_time_default.py b/ietf/submit/migrations/0021_submissioncheck_time_default.py deleted file mode 100644 index fbb31ed6f..000000000 --- a/ietf/submit/migrations/0021_submissioncheck_time_default.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-10-29 10:46 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0020_authors_as_jsonfield'), - ] - - operations = [ - migrations.AlterField( - model_name='submissioncheck', - name='time', - field=models.DateTimeField(default=datetime.datetime.now), - ), - ] diff --git a/ietf/submit/migrations/0022_submission_check_json_upgrade.py b/ietf/submit/migrations/0022_submission_check_json_upgrade.py deleted file mode 100644 index baf7cd6e5..000000000 --- a/ietf/submit/migrations/0022_submission_check_json_upgrade.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-10-27 06:34 -from __future__ import unicode_literals - -from tqdm import tqdm - -from django.db import migrations - -# convert the SubmissionCheck.items to consistently be a dict, with the -# following content: -# { -# 'checker': ; -# 'message': ; -# 'items': ; # error or warning items -# 'draft': ; -# 'modules': { }, -# } -tqdm.monitor_interval = 0 # workaround for spurious error in tqdm's monitoring thread - -def forwards(apps, schema_editor): - SubmissionCheck = apps.get_model('submit', 'SubmissionCheck') - for check in tqdm(SubmissionCheck.objects.all()): - # deal with these cases: - # * empty dictionary - # * empty list - # * dictionary with idnits info - # * list with yang errors and warnings - items = [] - if check.items == {} or check.items == '{}': - pass - elif check.items == []: - pass - elif type(check.items) == dict: - if 'checker' in check.items: - continue - elif type(check.items) == list: - items = check.items - else: - raise ValueError("Unexpected check.items value: %s: %s" % (type(check.items), check.items)) - check.items = { - 'checker': check.checker, - 'draft': check.submission.name, - 'rev': check.submission.rev, - 'items': items, - 'code': {}, - } - check.save() - -def backwards(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('meeting', '0058_set_new_field_meeting_days_values'), - ('submit', '0021_submissioncheck_time_default'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/submit/migrations/0023_create_draft_yang_links.py b/ietf/submit/migrations/0023_create_draft_yang_links.py deleted file mode 100644 index 9544bac52..000000000 --- a/ietf/submit/migrations/0023_create_draft_yang_links.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-11-01 14:00 -from __future__ import unicode_literals, print_function - -import os -import json -from tqdm import tqdm - -from django.db import migrations -from django.conf import settings - -import debug # pyflakes:ignore - -from ietf.submit.checkers import DraftYangChecker - -def get_file_name(draft): - return os.path.join(settings.INTERNET_DRAFT_PATH, '%s-%s.txt'%(draft.name, draft.rev)) - -def forwards(apps, schema_editor): - Document = apps.get_model('doc', 'Document') - SubmissionCheck = apps.get_model('submit', 'SubmissionCheck') - checker = DraftYangChecker() - - for draft in tqdm(Document.objects.filter(type_id='draft', states__slug='active', submission__checks__checker='yang validation').distinct()): - submission = draft.submission_set.filter(rev=draft.rev).order_by('-id').first() - if submission: - prev_check = submission.checks.filter(checker=checker.name).order_by('-id').first() - if prev_check and prev_check.message: - result = checker.check_file_txt(get_file_name(draft)) - passed, message, errors, warnings, items = result - items = json.loads(json.dumps(items)) - items['draft'] = draft.name - items['rev'] = draft.rev - check = SubmissionCheck.objects.create(submission=submission, checker=checker.name, passed=passed, - message=message, errors=errors, warnings=warnings, items=items, - symbol=checker.symbol) - if 'code' in check.items and check.items['code']: - code = check.items['code'] - if 'yang' in code: - modules = code['yang'] - # Yang impact analysis URL - draft.documenturl_set.filter(tag_id='yang-impact-analysis').delete() - f = settings.SUBMIT_YANG_CATALOG_MODULEARG - moduleargs = '&'.join([ f.format(module=m) for m in modules]) - url = settings.SUBMIT_YANG_CATALOG_IMPACT_URL.format(moduleargs=moduleargs, draft=draft.name) - desc = settings.SUBMIT_YANG_CATALOG_IMPACT_DESC.format(modules=','.join(modules), draft=draft.name) - draft.documenturl_set.create(url=url, tag_id='yang-impact-analysis', desc=desc) - # Yang module metadata URLs - old_urls = draft.documenturl_set.filter(tag_id='yang-module-metadata') - old_urls.delete() - for module in modules: - url = settings.SUBMIT_YANG_CATALOG_MODULE_URL.format(module=module) - desc = settings.SUBMIT_YANG_CATALOG_MODULE_DESC.format(module=module) - draft.documenturl_set.create(url=url, tag_id='yang-module-metadata', desc=desc) - -def backwards(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0022_submission_check_json_upgrade'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/submit/migrations/0024_create_rfc_yang_links.py b/ietf/submit/migrations/0024_create_rfc_yang_links.py deleted file mode 100644 index a56949ce9..000000000 --- a/ietf/submit/migrations/0024_create_rfc_yang_links.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.8 on 2017-11-01 14:00 -from __future__ import unicode_literals, print_function - -import os -import json -from tqdm import tqdm - -from django.db import migrations -from django.conf import settings - -import debug # pyflakes:ignore - -from ietf.submit.checkers import DraftYangChecker - -def get_file_name(draft): - return os.path.join(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR, '%s-%s.txt'%(draft.name, draft.rev)) - -YANG_RFCS = [ 5717, 6021, 6022, 6087, 6095, 6241, 6243, 6470, 6536, 6643, - 6728, 6991, 7223, 7224, 7277, 7317, 7407, 7758, 7895, 7952, 8022, 8040, - 8049, 8072, 8177, 8194, 8294, ] - -def forwards(apps, schema_editor): - DocAlias = apps.get_model('doc', 'DocAlias') - SubmissionCheck = apps.get_model('submit', 'SubmissionCheck') - checker = DraftYangChecker() - - for rfc_number in tqdm(YANG_RFCS): - draft = DocAlias.objects.get(name="rfc%s" % rfc_number).document - submission = draft.submission_set.filter(rev=draft.rev).order_by('-id').first() - if submission: - result = checker.check_file_txt(get_file_name(draft)) - passed, message, errors, warnings, items = result - items = json.loads(json.dumps(items)) - items['draft'] = draft.name - items['rev'] = draft.rev - check = SubmissionCheck.objects.create(submission=submission, checker=checker.name, passed=passed, - message=message, errors=errors, warnings=warnings, items=items, - symbol=checker.symbol) - if 'code' in check.items and check.items['code']: - code = check.items['code'] - if 'yang' in code: - modules = code['yang'] - # Yang impact analysis URL - draft.documenturl_set.filter(tag_id='yang-impact-analysis').delete() - f = settings.SUBMIT_YANG_CATALOG_MODULEARG - moduleargs = '&'.join([ f.format(module=m) for m in modules]) - url = settings.SUBMIT_YANG_CATALOG_IMPACT_URL.format(moduleargs=moduleargs, draft=draft.name) - desc = settings.SUBMIT_YANG_CATALOG_IMPACT_DESC.format(modules=','.join(modules), draft=draft.name) - draft.documenturl_set.create(url=url[:512], tag_id='yang-impact-analysis', desc=desc) - # Yang module metadata URLs - old_urls = draft.documenturl_set.filter(tag_id='yang-module-metadata') - old_urls.delete() - for module in modules: - url = settings.SUBMIT_YANG_CATALOG_MODULE_URL.format(module=module) - desc = settings.SUBMIT_YANG_CATALOG_MODULE_DESC.format(module=module) - draft.documenturl_set.create(url=url[:512], tag_id='yang-module-metadata', desc=desc) - -def backwards(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('submit', '0023_create_draft_yang_links'), - ] - - operations = [ - migrations.RunPython(forwards, backwards), - ] diff --git a/ietf/utils/migrations/0001_initial.py b/ietf/utils/migrations/0001_initial.py index 88ccae984..0d4130201 100644 --- a/ietf/utils/migrations/0001_initial.py +++ b/ietf/utils/migrations/0001_initial.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-02-20 10:52 from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): + initial = True + dependencies = [ ] @@ -13,12 +16,24 @@ class Migration(migrations.Migration): migrations.CreateModel( name='DumpInfo', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateTimeField()), ('host', models.CharField(max_length=128)), + ('tz', models.CharField(default=b'UTC', max_length=32)), + ], + ), + migrations.CreateModel( + name='VersionInfo', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(auto_now=True)), + ('command', models.CharField(max_length=32)), + ('switch', models.CharField(max_length=16)), + ('version', models.CharField(max_length=64)), + ('used', models.BooleanField(default=True)), ], options={ + 'verbose_name_plural': 'VersionInfo', }, - bases=(models.Model,), ), ] diff --git a/ietf/utils/migrations/0002_dumpinfo_tz.py b/ietf/utils/migrations/0002_dumpinfo_tz.py deleted file mode 100644 index 9483ebeae..000000000 --- a/ietf/utils/migrations/0002_dumpinfo_tz.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-12 08:19 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('utils', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='dumpinfo', - name='tz', - field=models.CharField(default=b'UTC', max_length=32), - ), - ] diff --git a/ietf/utils/migrations/0003_versioninfo.py b/ietf/utils/migrations/0003_versioninfo.py deleted file mode 100644 index bff778472..000000000 --- a/ietf/utils/migrations/0003_versioninfo.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-06-16 01:44 -from __future__ import unicode_literals - -from django.db import migrations, models - - -data = [ - { - "command": "xym", - "switch": "--version", - "used": True, - "version": "xym 0.3.2" - }, - { - "command": "pyang", - "switch": "--version", - "used": True, - "version": "pyang 1.7.2" - }, - { - "command": "yanglint", - "switch": "--version", - "used": True, - "version": "yanglint 0.12.183" - } -] - -def forwards(apps, schema_editor): - VersionInfo = apps.get_model('utils', 'VersionInfo') - for item in data: - VersionInfo.objects.create(**item) - -def backwards(apps, schema_editor): - pass - -class Migration(migrations.Migration): - - dependencies = [ - ('utils', '0002_dumpinfo_tz'), - ] - - operations = [ - migrations.CreateModel( - name='VersionInfo', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('time', models.DateTimeField(auto_now=True)), - ('command', models.CharField(max_length=32)), - ('switch', models.CharField(max_length=16)), - ('version', models.CharField(max_length=64)), - ('used', models.BooleanField(default=True)), - ], - options={ - 'verbose_name_plural': 'VersionInfo', - }, - ), - migrations.RunPython(forwards, backwards), - ]