First stab at importing roles

- Legacy-Id: 2711
This commit is contained in:
Ole Laursen 2010-12-09 15:39:48 +00:00
parent c71f1d9f97
commit df9dba63d8
2 changed files with 96 additions and 3 deletions

View file

@ -14,7 +14,9 @@ from redesign.group.models import *
from redesign.name.models import *
from ietf.idtracker.models import AreaGroup, IETFWG, Area, AreaGroup, Acronym, AreaWGURL, IRTF
# Group replaces IETFWG, Area, AreaGroup, Acronym, IRTF
# imports IETFWG, Area, AreaGroup, Acronym
# FIXME: should also import IRTF
# make sure we got the names
GroupStateName.objects.get_or_create(slug="bof", name="BOF") # is this a state?
@ -29,10 +31,9 @@ GroupTypeName.objects.get_or_create(slug="area", name="Area")
GroupTypeName.objects.get_or_create(slug="wg", name="WG")
GroupTypeName.objects.get_or_create(slug="rg", name="RG")
GroupTypeName.objects.get_or_create(slug="team", name="Team")
# FIXME: what about AG (area group?)?
# Area
for o in Area.objects.all():
group, _ = Group.objects.get_or_create(acronym=o.area_acronym.acronym)
@ -80,3 +81,4 @@ for o in IETFWG.objects.all():
group.save()
# FIXME: IRTF

91
redesign/import-roles.py Executable file
View file

@ -0,0 +1,91 @@
#!/usr/bin/python
import sys, os, re, datetime
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
sys.path = [ basedir ] + sys.path
from ietf import settings
settings.USE_DB_REDESIGN_PROXY_CLASSES = False
from django.core import management
management.setup_environ(settings)
from redesign.person.models import *
from redesign.group.models import *
from redesign.name.models import *
from ietf.idtracker.models import IESGLogin, AreaDirector
# assumptions:
# - groups have been imported
# PersonOrOrgInfo/PostalAddress/EmailAddress/PhoneNumber are not imported
# imports IESGLogin, AreaDirector
# should import IDAuthor, WGChair, WGEditor,
# WGSecretary, WGTechAdvisor, Role, ChairsHistory, IRTFChair
# make sure names exist
def name(name_class, slug, name, desc=""):
# create if it doesn't exist, set name
obj, _ = name_class.objects.get_or_create(slug=slug)
obj.name = name
obj.desc = desc
obj.save()
return obj
area_director_role = name(RoleName, "ad", "Area Director")
# helpers for creating the objects
def get_or_create_email(o, old_person):
email = o.person.email()[1]
if not email:
print "NO EMAIL FOR %s %s" % (o.__class__, o.id)
return None
e, _ = Email.objects.get_or_create(address=email)
if not e.person:
n = u"%s %s" % (o.person.first_name, o.person.last_name)
aliases = Alias.objects.filter(name=n)
if aliases:
p = aliases[0].person
else:
p = Person.objects.create(name=n, ascii=n)
Alias.objects.create(name=n, person=p)
# FIXME: fill in address?
e.person = p
e.save()
return e
# IESGLogin
for o in IESGLogin.objects.all():
print "importing IESGLogin", o.id, o.first_name, o.last_name
if not o.person:
print "NO PERSON", o.person_id
continue
email = get_or_create_email(o, o.person)
# FIXME: import o.user_level
# FIXME: import o.login_name, o.user_level
# AreaDirector
Role.objects.filter(name=area_director_role).delete()
for o in AreaDirector.objects.all():
print "importing AreaDirector", o.area, o.person
email = get_or_create_email(o, o.person)
if not o.area:
print "NO AREA", o.area_id
continue
area = Group.objects.get(acronym=o.area.area_acronym.acronym)
Role.objects.get_or_create(name=area_director_role, group=area, email=email)