2121#
2222#
2323from ietf .idtracker .models import PersonOrOrgInfo , IESGLogin , EmailAddress
24- from ietf .ietfauth .models import UserMap , WgPassword , LiaisonUser
24+ from ietf .ietfauth .models import WgPassword , LiaisonUser
25+ from ietf .utils import users
2526from django .core .validators import email_re
26- from django .contrib .auth .models import User , Group
27- from django .template import defaultfilters
27+ from django .contrib .auth .models import Group
2828import sys
2929
3030# Group mappings for IESGLogin entries
@@ -54,7 +54,7 @@ while line != '':
5454 except PersonOrOrgInfo .DoesNotExist :
5555 iesg = None
5656 except IESGLogin .DoesNotExist :
57- pass
57+ iesg = None
5858 if person is None :
5959 try :
6060 wg = WgPassword .objects .get (login_name = user )
@@ -77,56 +77,17 @@ while line != '':
7777 except AssertionError :
7878 print "%s has multiple PersonOrOrgInfo entries, so couldn't pick" % email
7979 if person is not None :
80- if '@' in user :
81- # slugify to remove non-ASCII; slugify uses hyphens but
82- # user schema says underscore.
83- user = defaultfilters .slugify (str (person )).replace ("-" , "_" )
84- if email is None :
85- email = person .email ()[1 ]
86- # Make sure the username is unique.
87- # If it already exists,
88- # 1. if the email is the same then skip, it's the same person
89- # 2. otherwise, add a number to the end of the username
90- # and loop.
91- add = ''
92- while True :
93- try :
94- t = user
95- if add :
96- t += "%d" % ( add )
97- u = User .objects .get (username__iexact = t )
98- except User .DoesNotExist :
99- u = None
100- user = t
101- break
102- if u .email == email :
103- break
104- else :
105- if add == '' :
106- add = 2
107- else :
108- add = add + 1
109- if not u :
110- try :
111- map = UserMap .objects .get (person = person )
112- u = map .user
113- except UserMap .DoesNotExist :
114- pass
115- if u :
80+ try :
81+ u = users .create_user (user , email , person , cryptpw = pw )
82+ except users .UserAlreadyExists , (msg , u ):
11683 print "Already in system as %s when adding %s (%s)" % ( u .username , user , email )
117- pass
118- else :
119- u = User (username = user , email = email , password = 'crypt$%s$%s' % ( pw [:2 ], pw [2 :] ), first_name = person .first_name , last_name = person .last_name )
120- #print "Saving user: username='%s', email='%s'" % ( u.username, u.email )
121- u .save ()
122- umap , created = UserMap .objects .get_or_create (user = u , person = person )
123- # get_or_create saves umap for us.
12484 if iesg :
12585 try :
12686 group , created = Group .objects .get_or_create (name = level2group [iesg .user_level ])
12787 except KeyError :
12888 group = None
12989 if group :
90+ print "Adding %s to %s (user_level %d)" % (u .username , group .name , iesg .user_level )
13091 u .groups .add (group )
13192 else :
13293 print "Could not map %s to person" % ( user )
0 commit comments