3 sys.path.insert(0, '../..')
4 sys.path.insert(0, '../')
5 from meabook.parsers.ldif import LDIFParser
6 from meabook.database.SQLite import SQLite
8 regexp = re.compile(r'o=([^,]+)')
10 class MeabookLDIFParser(LDIFParser):
11 def __init__(self, fobj, database):
12 LDIFParser.__init__(self, fobj)
13 self.database = database
15 def handle(self, dn, entry):
16 """Process each entry from ldif file."""
19 if (not 'uid' in entry) or (not 'ou' in entry):
21 if ('deleted' in dn) or (not 'people' in dn):
24 # remove unused fields
25 used_fields = ['cn', 'uid', 'title', 'mail', 'uidNumber', \
26 'employeeNumber', 'homePhone', 'telephoneNumber', 'internalPhone', \
27 'mobile', 'gender', 'o', 'ou', 'personalTitle', 'gecos', 'sn', \
28 'givenName', 'initials', 'roomNumber', 'description', 'st', \
29 'facsimileTelephoneNumber', 'departmentNumber', 'displayName', \
31 for field in entry.keys():
32 if field not in used_fields:
36 dn = regexp.findall(dn)
39 # capitalize some fields
41 entry[field][0] = ' '.join([item.decode('utf-8').capitalize() for \
42 item in entry[field][0].split(' ')])
43 self.database.add_entry(entry)
49 LDIFParser.parse(self)
53 if __name__ == "__main__":
54 if len(sys.argv) != 2:
55 print "USAGE: %s fname" % sys.argv[0]
59 database = SQLite('/tmp/')
60 parser = MeabookLDIFParser(open(sys.argv[1]), database)
62 print 'Wrong file name'