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', 'homePhone', 'o'
26 'telephoneNumber', 'internalPhone', 'mobile', 'gender', 'ou', \
27 'sn', 'givenName', 'initials', 'dateOfBirth', \
28 'facsimileTelephoneNumber']
29 for field in entry.keys():
30 if field not in used_fields:
34 dn = regexp.findall(dn)
37 # capitalize some fields
39 entry[field][0] = ' '.join([item.decode('utf-8').capitalize() for \
40 item in entry[field][0].split(' ')])
41 self.database.add_entry(entry)
47 LDIFParser.parse(self)
51 if __name__ == "__main__":
52 if len(sys.argv) != 2:
53 print "USAGE: %s fname" % sys.argv[0]
57 database = SQLite('/tmp/')
58 parser = MeabookLDIFParser(open(sys.argv[1]), database)
60 print 'Wrong file name'