From e851dbac270c4787bc6bf3aa6509a27fb240bee2 Mon Sep 17 00:00:00 2001 From: Bill Fenner Date: Thu, 7 Jun 2007 17:58:06 +0000 Subject: [PATCH] Create mailing list domains table and idtracker Roles model. Add fixtures to populate IAD into Roles and existing domains and authorizers into mailinglists_domains. (The Roles fixture will become wrong when we get a new IAD so should be removed after the production database has this value.) - Legacy-Id: 255 --- ietf/idtracker/fixtures/initial_data.xml | 7 +++++++ ietf/idtracker/models.py | 20 ++++++++++++++++++ ietf/mailinglists/fixtures/initial_data.xml | 23 +++++++++++++++++++++ ietf/mailinglists/models.py | 9 +++++++- 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 ietf/idtracker/fixtures/initial_data.xml create mode 100644 ietf/mailinglists/fixtures/initial_data.xml diff --git a/ietf/idtracker/fixtures/initial_data.xml b/ietf/idtracker/fixtures/initial_data.xml new file mode 100644 index 000000000..83b30c4e8 --- /dev/null +++ b/ietf/idtracker/fixtures/initial_data.xml @@ -0,0 +1,7 @@ + + + + 14966 + IAD + + diff --git a/ietf/idtracker/models.py b/ietf/idtracker/models.py index 142480959..99d5219c6 100644 --- a/ietf/idtracker/models.py +++ b/ietf/idtracker/models.py @@ -775,6 +775,26 @@ class GoalMilestone(models.Model): #### end wg stuff +class Role(models.Model): + '''This table is named 'chairs' in the database, as its original + role was to store "who are IETF, IAB and IRTF chairs?". It has + since expanded to store roles, such as "IAB Exec Dir" and "IAD", + so the model is renamed. + ''' + person = models.ForeignKey(PersonOrOrgInfo, db_column='person_or_org_tag', raw_id_admin=True) + role_name = models.CharField(maxlength=25, db_column='chair_name') + def __str__(self): + return "%s (%s)" % (self.person, self.role()) + def role(self): + if self.role_name in ('IETF', 'IAB', 'IRTF', 'NomCom'): + return "%s Chair" % self.role_name + else: + return self.role_name + class Meta: + db_table = 'chairs' + class Admin: + pass + class ChairsHistory(models.Model): CHAIR_CHOICES = ( ( '1', 'IETF' ), diff --git a/ietf/mailinglists/fixtures/initial_data.xml b/ietf/mailinglists/fixtures/initial_data.xml new file mode 100644 index 000000000..d8c65eb46 --- /dev/null +++ b/ietf/mailinglists/fixtures/initial_data.xml @@ -0,0 +1,23 @@ + + + + ietf.org + + + + + + + iab.org + + + + + + + irtf.org + + + + + diff --git a/ietf/mailinglists/models.py b/ietf/mailinglists/models.py index 01fdba791..e6037554f 100644 --- a/ietf/mailinglists/models.py +++ b/ietf/mailinglists/models.py @@ -1,5 +1,6 @@ from django.db import models from ietf.idtracker.models import Acronym, Area, PersonOrOrgInfo +from ietf.idtracker.models import Role import random from datetime import datetime @@ -21,6 +22,12 @@ class ImportedMailingList(models.Model): class Admin: pass +class Domain(models.Model): + domain = models.CharField("Mailing List Domain Name", maxlength=100) + approvers = models.ManyToManyField(Role) + class Admin: + pass + class MailingList(models.Model): SUBSCRIPTION_CHOICES = ( (1, 'Confirm'), @@ -103,7 +110,7 @@ class NonWgMailingList(models.Model): list_url = models.CharField("List URL", maxlength=255) admin = models.TextField("Administrator(s)' Email Address(es)", blank=True) purpose = models.TextField(blank=True) - area = models.ForeignKey(Area, db_column='area_acronym_id') + area = models.ForeignKey(Area, db_column='area_acronym_id', null=True) subscribe_url = models.CharField("Subscribe URL", blank=True, maxlength=255) subscribe_other = models.TextField("Subscribe Other", blank=True) # Can be 0, 1, -1, or what looks like a person_or_org_tag, positive or neg.