- for person in persons:
- how_many=len(person['site_ids'])
- if how_many !=1:
- if verbose: print "Checking persons in exactly one site -- person %s in %s site(s) -- ignored"%(person['email'],how_many)
- continue
- try: login_base=sites_by_id[person['site_ids'][0]]['login_base']
- except: print "Cannot handle person %s - site not found"%person['email']; continue
- hrn=email_to_hrn ("%s.%s"%(toplevel,login_base),person['email'])
- if person['hrn'] != hrn:
- print "Person %s - current hrn %s, should be %s"%(person['email'], person['hrn'], hrn)
- if dry_run: continue
- SetPersonHrn (person['person_id'],hrn)
- else:
- if verbose: print "Person %s OK"%person['email']
+ persons_by_id = dict ( [ (person['person_id'],person) for person in persons ] )
+ for site in sites:
+ login_base=site['login_base']
+ for person_id in site.get('person_ids', []):
+ try: person=persons_by_id[person_id]
+ except: print 'cannot find person %s'%person_id; continue
+ how_many=len(person['site_ids'])
+ if how_many !=1:
+ if verbose: print "Checking persons in exactly one site -- person %s in %s site(s) -- ignored"%(person['email'],how_many)
+ continue
+
+ hrn=email_to_hrn ("%s.%s"%(toplevel,login_base),person['email'])
+ if person['hrn'] != hrn:
+ print "Person %s - current hrn %s, should be %s"%(person['email'], person['hrn'], hrn)
+ if dry_run: continue
+ SetPersonHrn (person['person_id'],hrn)
+ else:
+ if verbose: print "Person %s OK"%person['email']