Skip to content

Instantly share code, notes, and snippets.

@ganwell
Last active September 6, 2020 01:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ganwell/5490466 to your computer and use it in GitHub Desktop.
Save ganwell/5490466 to your computer and use it in GitHub Desktop.
ldapdb = collections.namedtuple("namespace", ['person', 'group', 'share', 'maillist'])
ldapdb.person = ldap_to_pandas(ldap.search(filter="(&(objectClass=univentionPerson))", base=common.ucs_access.base_dn()))
ldapdb.group = ldap_to_pandas(ldap.search(filter="(&(objectClass=univentionGroup))", base=common.ucs_access.base_dn()))
ldapdb.share = ldap_to_pandas(ldap.search(filter="(&(objectClass=univentionShare))", base=common.ucs_access.base_dn()))
ldapdb.maillist = ldap_to_pandas(ldap.search(filter="(&(objectClass=univentionMailList))", base=common.ucs_access.base_dn()))
def ldap_to_pandas(search):
def to_hash(record):
dictlist = []
for k, v in record[1].iteritems():
try:
if len(v) == 1:
dictlist.append((k, v[0].decode('utf-8')))
continue
except:
pass
dictlist.append((k, v))
dictlist.append(('dn', record[0]))
return dict(dictlist)
return pandas.DataFrame([to_hash(x) for x in search])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment