1515from redesign .person .models import *
1616from redesign .group .models import *
1717from redesign .name .models import *
18- from ietf .idtracker .models import IESGLogin , AreaDirector , IDAuthor , PersonOrOrgInfo
18+ from ietf .idtracker .models import IESGLogin , AreaDirector , IDAuthor , PersonOrOrgInfo , WGEditor
1919
2020# assumptions:
2121# - groups have been imported
2222
2323# PersonOrOrgInfo/PostalAddress/EmailAddress/PhoneNumber are not
2424# imported, although some information is retrieved from those
2525
26- # imports IESGLogin, AreaDirector and persons from IDAuthor
26+ # imports IESGLogin, AreaDirector, WGEditor and persons from IDAuthor
2727
28- # should probably import WGChair, WGEditor, WGSecretary,
28+ # should probably import WGChair, WGSecretary,
2929# WGTechAdvisor, Role, ChairsHistory, IRTFChair
3030
3131# make sure names exist
@@ -38,7 +38,8 @@ def name(name_class, slug, name, desc=""):
3838 return obj
3939
4040area_director_role = name (RoleName , "ad" , "Area Director" )
41-
41+ inactive_area_director_role = name (RoleName , "ex-ad" , "Ex-Area Director" , desc = "In-active Area Director" )
42+ wg_editor_role = name (RoleName , "wgeditor" , "Working Group Editor" )
4243
4344# helpers for creating the objects
4445def get_or_create_email (o , create_fake ):
@@ -86,11 +87,14 @@ def get_or_create_email(o, create_fake):
8687
8788 email = get_or_create_email (o , create_fake = False )
8889
89- # FIXME: import o.login_name, o.user_level
90+ if o .user_level == IESGLogin .INACTIVE_AD_LEVEL :
91+ if not Role .objects .filter (name = inactive_area_director_role , email = email ):
92+ # connect them directly to the IESG as we don't really know where they belong
93+ Role .objects .create (name = inactive_area_director_role , group = Group .objects .get (acronym = "iesg" ), email = email )
9094
95+ # FIXME: import o.login_name, o.user_level
9196
9297# AreaDirector
93- Role .objects .filter (name = area_director_role ).delete ()
9498for o in AreaDirector .objects .all ():
9599 if not o .area :
96100 print "NO AREA" , o .person , o .area_id
@@ -101,8 +105,34 @@ def get_or_create_email(o, create_fake):
101105
102106 area = Group .objects .get (acronym = o .area .area_acronym .acronym )
103107
104- Role .objects .get_or_create (name = area_director_role , group = area , email = email )
108+ if area .state_id == "active" :
109+ role_type = area_director_role
110+ else :
111+ # can't be active area director in an inactive area
112+ role_type = inactive_area_director_role
113+
114+ r = Role .objects .filter (name__in = (area_director_role , inactive_area_director_role ),
115+ email = email )
116+ if r and r [0 ].group == "iesg" :
117+ r [0 ].group = area
118+ r [0 ].name = role_type
119+ r [0 ].save ()
120+ else :
121+ Role .objects .get_or_create (name = role_type , group = area , email = email )
122+
123+ # WGEditor
124+ for o in WGEditor .objects .all ():
125+ # if not o.group_acronym:
126+ # print "NO GROUP", o.person, o.group_acronym_id
127+ # continue
105128
129+ print "importing WGEditor" , o .group_acronym , o .person
130+ email = get_or_create_email (o , create_fake = False )
131+
132+ group = Group .objects .get (acronym = o .group_acronym .group_acronym .acronym )
133+
134+ Role .objects .get_or_create (name = wg_editor_role , group = group , email = email )
135+
106136# IDAuthor persons
107137for o in IDAuthor .objects .all ().order_by ('id' ).select_related ('person' ):
108138 print "importing IDAuthor" , o .id , o .person_id , o .person .first_name .encode ('utf-8' ), o .person .last_name .encode ('utf-8' )
0 commit comments