Add list_all and uid2dn; make list_* return {dn:...} instead of {uid:...}

This commit is contained in:
David Bartley 2008-01-13 21:13:08 -05:00
parent 0dbd7a6dd5
commit 9fc6e34b15
1 changed files with 26 additions and 9 deletions

View File

@ -174,6 +174,9 @@ def get(userid):
return ldapi.lookup(ld, 'uid', userid, cfg['users_base'])
def uid2dn(uid):
return 'uid=%s,%s' % (ldapi.escape(uid), cfg['users_base'])
def list_term(term):
"""
@ -185,16 +188,15 @@ def list_term(term):
Returns: a list of members
Example: list_term('f2006'): -> {
'mspang': { 'cn': 'Michael Spang', ... },
'ctdalek': { 'cn': 'Calum T. Dalek', ... },
'uid=mspang, ou=...': { 'cn': 'Michael Spang', ... },
'uid=ctdalek, ou=...': { 'cn': 'Calum T. Dalek', ... },
...
}
"""
members = ldapi.search(ld, cfg['users_base'],
'(&(objectClass=member)(term=%s))', [ term ])
return dict([(member[1]['uid'][0], member[1]) for member in members])
return dict([(member[0], member[1]) for member in members])
def list_name(name):
@ -207,15 +209,14 @@ def list_name(name):
Returns: a list of member dictionaries
Example: list_name('Spang'): -> {
'mspang': { 'cn': 'Michael Spang', ... },
'uid=mspang, ou=...': { 'cn': 'Michael Spang', ... },
...
]
"""
members = ldapi.search(ld, cfg['users_base'],
'(&(objectClass=member)(cn~=%s))', [ name ])
return dict([(member[1]['uid'][0], member[1]) for member in members])
return dict([(member[0], member[1]) for member in members])
def list_group(group):
@ -228,7 +229,7 @@ def list_group(group):
Returns: a list of member dictionaries
Example: list_name('syscom'): -> {
'mspang': { 'cn': 'Michael Spang', ... },
'uid=mspang, ou=...': { 'cn': 'Michael Spang', ... },
...
]
"""
@ -239,10 +240,26 @@ def list_group(group):
for member in members:
info = get(member)
if info:
ret[member] = info
ret[uid2dn(member)] = info
return ret
def list_all():
"""
Build a list of all members
Returns: a list of member dictionaries
Example: list_name('Spang'): -> {
'uid=mspang, ou=...': { 'cn': 'Michael Spang', ... },
...
]
"""
members = ldapi.search(ld, cfg['users_base'], '(objectClass=member)')
return dict([(member[0], member[1]) for member in members])
def list_positions():
"""
Build a list of positions