def handle(self, *args, **options): if len(args) < 1: print 'Missing name of csv file' return position = Position.objects.get(name='Senator') # Remove old senators people = Person.objects.filter(positions=position) for p in people: p.positions.remove(position) approvals = ApprovedUser.objects.filter(position=position).delete() # Add new senators with open(args[0], 'r') as f: reader = csv.DictReader(f, fieldnames=('groups', 'email')) people_added = 0 for i, row in enumerate(reader): # Skip vacant positions if len(row['email']) == 0: continue # Fetch info from the directory ldap_info = get_ldap_info(email=row['email']) # Create a Person object -- if they haven't yet logged in, # the corresponding user object will be created when they do person, created = Person.objects.get_or_create(netid=ldap_info['uid'][0], defaults={'first_name': ldap_info['givenName'][0], 'last_name': ldap_info['sn'][0], 'email': ldap_info['mail'][0], 'groups_represented': row['groups']}) person.positions.add(position) if created: people_added += 1 if len(person.groups_represented) == 0: person.groups_represented = row['groups'] person.save() # Create an ApprovedUser object so this person can log in later au, _ = ApprovedUser.objects.get_or_create(netid=ldap_info['uid'][0], defaults={'position': position}) print 'Added %d new senators' % people_added
def handle(self, *args, **options): if len(args) < 1: print "Missing name of csv file" return with open(args[0], "r") as f: reader = csv.DictReader(f, fieldnames=("position", "email")) positions_created = 0 people_added = 0 for i, row in enumerate(reader): position, created = Position.objects.get_or_create( name=row["position"], defaults={"on_exec_board": True} ) if created: positions_created += 1 position.order = i position.save() # Fetch info from the directory ldap_info = get_ldap_info(email=row["email"]) # Remove old exec members with this position people = Person.objects.filter(positions=position) for p in people: p.positions.remove(position) ApprovedUser.objects.filter(position=position).delete() # Create a Person object -- if they haven't yet logged in, # the corresponding user object will be created when they do person, created = Person.objects.get_or_create( netid=ldap_info["uid"][0], defaults={ "first_name": ldap_info["givenName"][0], "last_name": ldap_info["sn"][0], "email": ldap_info["mail"][0], }, ) if created: people_added += 1 person.positions.add(position) # Create an ApprovedUser object so this person can log in later au, _ = ApprovedUser.objects.get_or_create(netid=ldap_info["uid"][0], defaults={"position": position}) print "Added %d people" % people_added print "Created %d positions" % positions_created
def handle(self, *args, **options): if len(args) < 1: print 'Missing name of csv file' return with open(args[0], 'r') as f: reader = csv.DictReader(f, fieldnames=('position', 'email')) positions_created = 0 people_added = 0 for i, row in enumerate(reader): position, created = Position.objects.get_or_create(name=row['position'], defaults={'senate_leadership': True}) if created: positions_created += 1 position.order = i position.save() # Fetch info from the directory ldap_info = get_ldap_info(email=row['email']) # Remove old exec members with this position people = Person.objects.filter(positions=position) for p in people: p.positions.remove(position) ApprovedUser.objects.filter(position=position).delete() # Create a Person object -- if they haven't yet logged in, # the corresponding user object will be created when they do person, created = Person.objects.get_or_create(netid=ldap_info['uid'][0], defaults={'first_name': ldap_info['givenName'][0], 'last_name': ldap_info['sn'][0], 'email': ldap_info['mail'][0]}) if created: people_added += 1 person.positions.add(position) # Create an ApprovedUser object so this person can log in later au, _ = ApprovedUser.objects.get_or_create(netid=ldap_info['uid'][0], defaults={'position':position}) print 'Added %d people' % people_added print 'Created %d positions' % positions_created