Skip to content

Commit 1517c3d

Browse files
committed
Import users/persons from LegacyLiaisonUser and LegacyWgPassword
- Legacy-Id: 3367
1 parent 44b96dd commit 1517c3d

3 files changed

Lines changed: 71 additions & 17 deletions

File tree

redesign/importing/import-persons.py

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
from django.core import management
1212
management.setup_environ(settings)
1313

14-
from ietf.idtracker.models import AreaDirector, IETFWG, PersonOrOrgInfo, IDAuthor
14+
from ietf.idtracker.models import IESGLogin, AreaDirector, IETFWG, PersonOrOrgInfo, IDAuthor
15+
from ietf.ietfauth.models import LegacyWgPassword, LegacyLiaisonUser
1516
from ietf.liaisons.models import LiaisonDetail, LiaisonManagers, SDOAuthorizedIndividual
1617
from redesign.person.models import *
1718
from redesign.importing.utils import *
@@ -54,6 +55,64 @@
5455
defaults=dict(active=True, person=system_person)
5556
)
5657

58+
# LegacyWgPassword
59+
for o in LegacyWgPassword.objects.all():
60+
print "importing LegacyWgPassword", o.pk, o.person.first_name, o.person.last_name
61+
62+
email = get_or_create_email(o, create_fake=False)
63+
if not email:
64+
continue
65+
66+
username = o.login_name[:30]
67+
persons = Person.objects.filter(user__username=username)
68+
if persons:
69+
if persons[0] != email.person:
70+
print "SKIPPING", o.login_name, "who is connected to another person "
71+
continue
72+
73+
user, _ = User.objects.get_or_create(username=username)
74+
email.person.user = user
75+
email.person.save()
76+
77+
# LegacyLiaisonUser
78+
for o in LegacyLiaisonUser.objects.all():
79+
print "importing LegacyLiaisonUser", o.pk, o.person.first_name, o.person.last_name
80+
81+
email = get_or_create_email(o, create_fake=False)
82+
if not email:
83+
continue
84+
85+
username = o.login_name[:30]
86+
persons = Person.objects.filter(user__username=username)
87+
if persons:
88+
if persons[0] != email.person:
89+
print "SKIPPING", o.login_name, "who is connected to another person "
90+
continue
91+
92+
user, _ = User.objects.get_or_create(username=username)
93+
email.person.user = user
94+
email.person.save()
95+
96+
# IESGLogin
97+
for o in IESGLogin.objects.all():
98+
print "importing IESGLogin", o.pk, o.first_name, o.last_name
99+
100+
if not o.person:
101+
persons = PersonOrOrgInfo.objects.filter(first_name=o.first_name, last_name=o.last_name)
102+
if persons:
103+
o.person = persons[0]
104+
else:
105+
print "NO PERSON", o.person_id
106+
continue
107+
108+
email = get_or_create_email(o, create_fake=False)
109+
if not email:
110+
continue
111+
112+
user, _ = User.objects.get_or_create(username=o.login_name)
113+
email.person.user = user
114+
email.person.save()
115+
57116
# AreaDirector from IETFWG persons
58117
for o in AreaDirector.objects.filter(ietfwg__in=IETFWG.objects.all()).exclude(area=None).distinct().order_by("pk").iterator():
59118
print "importing AreaDirector (from IETFWG) persons", o.pk

redesign/importing/import-roles.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,10 @@
2727
# - persons have been imported
2828
# - groups have been imported
2929

30-
# imports IESGLogin, AreaDirector, WGEditor, WGChair, IRTFChair,
31-
# WGSecretary, WGTechAdvisor, NomCom chairs from ChairsHistory,
32-
# IESGHistory, Role, LiaisonManagers, SDOAuthorizedIndividual
33-
34-
# FIXME: should probably import LegacyWgPassword, LegacyLiaisonUser
30+
# imports roles from IESGLogin, AreaDirector, WGEditor, WGChair,
31+
# IRTFChair, WGSecretary, WGTechAdvisor, NomCom chairs from
32+
# ChairsHistory, IESGHistory, Role, LiaisonManagers,
33+
# SDOAuthorizedIndividual
3534

3635
area_director_role = name(RoleName, "ad", "Area Director")
3736
inactive_area_director_role = name(RoleName, "ex-ad", "Ex-Area Director", desc="Inactive Area Director")
@@ -166,24 +165,17 @@
166165

167166
# IESGLogin
168167
for o in IESGLogin.objects.all():
169-
print "importing IESGLogin", o.id, o.first_name, o.last_name
170-
168+
print "importing IESGLogin", o.pk, o.first_name, o.last_name
169+
171170
if not o.person:
172171
persons = PersonOrOrgInfo.objects.filter(first_name=o.first_name, last_name=o.last_name)
173172
if persons:
174173
o.person = persons[0]
175174
else:
176175
print "NO PERSON", o.person_id
177176
continue
178-
177+
179178
email = get_or_create_email(o, create_fake=False)
180-
if not email:
181-
continue
182-
183-
user, _ = User.objects.get_or_create(username=o.login_name)
184-
email.person.user = user
185-
email.person.save()
186-
187179
# current ADs are imported below
188180
if o.user_level == IESGLogin.SECRETARIAT_LEVEL:
189181
if not Role.objects.filter(name=secretary_role, email=email):

redesign/importing/utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ def old_person_to_person(person):
2121
return Person.objects.get(alias__name=u"%s %s" % (person.first_name, person.last_name))
2222

2323
def old_person_to_email(person):
24-
hardcoded_emails = { 'Dinara Suleymanova': "dinaras@ietf.org" }
24+
hardcoded_emails = {
25+
"Dinara Suleymanova": "dinaras@ietf.org",
26+
"Dow Street": "dow.street@linquest.com",
27+
}
2528

2629
return clean_email_address(person.email()[1] or hardcoded_emails.get("%s %s" % (person.first_name, person.last_name)) or "")
2730

0 commit comments

Comments
 (0)