8 def dictize_line(header, line,):
10 for key, elem in zip(header, line, ):
14 def undictize_line(headers, dct, ):
20 def get_ldap_data(lastname, fields):
21 con = ldap.open('ldap.mit.edu')
22 con.simple_bind_s("", "")
24 result = con.search_s('dc=mit,dc=edu', ldap.SCOPE_SUBTREE, '(&(sn=%s)(uid=*))'%lastname, fields)
25 if len(result) > 1: sys.stderr.write("WARNING: More than one result returned for %s\n" % lastname)
26 if len(result) < 1: sys.stderr.write("WARNING: No results returned for %s\n" % lastname)
31 retelem[key] = person[1][key][0]
35 if __name__ == '__main__':
38 reader = csv.reader(indb, )
39 writer = csv.writer(outdb, )
40 header = reader.next()
42 line_dict = dictize_line(header, line)
44 new_lines = get_ldap_data(line_dict['Last'], ['cn', 'sn', 'givenName', 'uid', ])
45 except ldap.SIZELIMIT_EXCEEDED, e:
47 for new_line in new_lines:
48 writer.writerow(line + undictize_line(['uid', 'cn', ], new_line))