Skip to content

Commit df9dba6

Browse files
committed
First stab at importing roles
- Legacy-Id: 2711
1 parent c71f1d9 commit df9dba6

2 files changed

Lines changed: 96 additions & 3 deletions

File tree

redesign/import-groups.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
from redesign.name.models import *
1515
from ietf.idtracker.models import AreaGroup, IETFWG, Area, AreaGroup, Acronym, AreaWGURL, IRTF
1616

17-
# Group replaces IETFWG, Area, AreaGroup, Acronym, IRTF
17+
# imports IETFWG, Area, AreaGroup, Acronym
18+
19+
# FIXME: should also import IRTF
1820

1921
# make sure we got the names
2022
GroupStateName.objects.get_or_create(slug="bof", name="BOF") # is this a state?
@@ -29,10 +31,9 @@
2931
GroupTypeName.objects.get_or_create(slug="wg", name="WG")
3032
GroupTypeName.objects.get_or_create(slug="rg", name="RG")
3133
GroupTypeName.objects.get_or_create(slug="team", name="Team")
32-
3334
# FIXME: what about AG (area group?)?
3435

35-
36+
3637
# Area
3738
for o in Area.objects.all():
3839
group, _ = Group.objects.get_or_create(acronym=o.area_acronym.acronym)
@@ -80,3 +81,4 @@
8081

8182
group.save()
8283

84+
# FIXME: IRTF

redesign/import-roles.py

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#!/usr/bin/python
2+
3+
import sys, os, re, datetime
4+
5+
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
6+
sys.path = [ basedir ] + sys.path
7+
8+
from ietf import settings
9+
settings.USE_DB_REDESIGN_PROXY_CLASSES = False
10+
11+
from django.core import management
12+
management.setup_environ(settings)
13+
14+
from redesign.person.models import *
15+
from redesign.group.models import *
16+
from redesign.name.models import *
17+
from ietf.idtracker.models import IESGLogin, AreaDirector
18+
19+
# assumptions:
20+
# - groups have been imported
21+
22+
# PersonOrOrgInfo/PostalAddress/EmailAddress/PhoneNumber are not imported
23+
24+
# imports IESGLogin, AreaDirector
25+
26+
# should import IDAuthor, WGChair, WGEditor,
27+
# WGSecretary, WGTechAdvisor, Role, ChairsHistory, IRTFChair
28+
29+
# make sure names exist
30+
def name(name_class, slug, name, desc=""):
31+
# create if it doesn't exist, set name
32+
obj, _ = name_class.objects.get_or_create(slug=slug)
33+
obj.name = name
34+
obj.desc = desc
35+
obj.save()
36+
return obj
37+
38+
area_director_role = name(RoleName, "ad", "Area Director")
39+
40+
41+
# helpers for creating the objects
42+
def get_or_create_email(o, old_person):
43+
email = o.person.email()[1]
44+
if not email:
45+
print "NO EMAIL FOR %s %s" % (o.__class__, o.id)
46+
return None
47+
48+
e, _ = Email.objects.get_or_create(address=email)
49+
if not e.person:
50+
n = u"%s %s" % (o.person.first_name, o.person.last_name)
51+
aliases = Alias.objects.filter(name=n)
52+
if aliases:
53+
p = aliases[0].person
54+
else:
55+
p = Person.objects.create(name=n, ascii=n)
56+
Alias.objects.create(name=n, person=p)
57+
# FIXME: fill in address?
58+
59+
e.person = p
60+
e.save()
61+
62+
return e
63+
64+
65+
# IESGLogin
66+
for o in IESGLogin.objects.all():
67+
print "importing IESGLogin", o.id, o.first_name, o.last_name
68+
69+
if not o.person:
70+
print "NO PERSON", o.person_id
71+
continue
72+
73+
email = get_or_create_email(o, o.person)
74+
75+
# FIXME: import o.user_level
76+
# FIXME: import o.login_name, o.user_level
77+
78+
79+
# AreaDirector
80+
Role.objects.filter(name=area_director_role).delete()
81+
for o in AreaDirector.objects.all():
82+
print "importing AreaDirector", o.area, o.person
83+
email = get_or_create_email(o, o.person)
84+
if not o.area:
85+
print "NO AREA", o.area_id
86+
continue
87+
88+
area = Group.objects.get(acronym=o.area.area_acronym.acronym)
89+
90+
Role.objects.get_or_create(name=area_director_role, group=area, email=email)
91+

0 commit comments

Comments
 (0)