--- /dev/null
+#!/usr/bin/python
+
+import sys
+import os
+import csv
+import ldap
+
+def dictize_line(header, line,):
+ line_dict = {}
+ for key, elem in zip(header, line, ):
+ line_dict[key]=elem
+ return line_dict
+
+def undictize_line(headers, dct, ):
+ line = []
+ for col in headers:
+ line.append(dct[col])
+ return line
+
+def get_ldap_data(lastname, fields):
+ con = ldap.open('ldap.mit.edu')
+ con.simple_bind_s("", "")
+ dn = "dc=mit,dc=edu"
+ result = con.search_s('dc=mit,dc=edu', ldap.SCOPE_SUBTREE, '(&(sn=%s)(uid=*))'%lastname, fields)
+ if len(result) > 1: sys.stderr.write("WARNING: More than one result returned for %s\n" % lastname)
+ if len(result) < 1: sys.stderr.write("WARNING: No results returned for %s\n" % lastname)
+ ret = []
+ for person in result:
+ retelem = {}
+ for key in person[1]:
+ retelem[key] = person[1][key][0]
+ ret.append(retelem)
+ return ret
+
+if __name__ == '__main__':
+ indb = sys.stdin
+ outdb = sys.stdout
+ reader = csv.reader(indb, )
+ writer = csv.writer(outdb, )
+ header = reader.next()
+ for line in reader:
+ line_dict = dictize_line(header, line)
+ try:
+ new_lines = get_ldap_data(line_dict['Last'], ['cn', 'sn', 'givenName', 'uid', ])
+ except ldap.SIZELIMIT_EXCEEDED, e:
+ pass
+ for new_line in new_lines:
+ writer.writerow(line + undictize_line(['uid', 'cn', ], new_line))
--- /dev/null
+#!/usr/bin/python
+
+import sys
+import os
+import csv
+import smtplib
+
+def dictize_line(header, line,):
+ line_dict = {}
+ for key, elem in zip(header, line, ):
+ line_dict[key]=elem
+ return line_dict
+
+if __name__=='__main__':
+ smtp = smtplib.SMTP()
+ smtp.connect()
+ email_file = sys.argv[1]
+ email = open(email_file, 'r').read()
+ reader = csv.reader(open(sys.argv[2]))
+ header = reader.next()
+ print header
+ for line in reader:
+ dct = dictize_line(header, line, )
+ print dct
+ text = email % dct
+ smtp.sendmail('adehnert@mit.edu', [dct['username']+'@mit.edu', 'book-exchange@mit.edu', ], text, )