Cruelemort a écrit : > All, > > I am hoping someone would be able to help me with a problem. I have an > LDAP server running on a linux box, this LDAP server contains a > telephone list in various groupings, the ldif file of which is - > (snip) > > I am creating a python client program that will display the telephone > list in the same directory structure as is on the LDAP server (i.e. it > starts with buttons of all the groups, when you click on a group it > comes up with buttons of all the numbers or groups available, and you > can continually drill down). > > I was wondering the best way to do this? I have installed and used the > python-ldap libraries and these allow me to access and search the > server, but the searches always return a horrible nesting of lists, > tuples and dictionaries, below is an example of returning just one > record - > > ('dc=example,dc=com', {'objectClass': ['top', 'dcObject', > 'organization'], 'dc': ['example'], 'o': ['Example Organisation']})
What's your problem ? That's exactly what your ldap record should look like. A (base_dn, record) tuple, where the record is a dict of attribute_name:[values, ...] > Basically i think i need to parse the search results to create objects Q&D wrapper: class LdapObject(object): def __init__(self, ldapentry): self.dn, self._record = ldapentry def __getattr__(self, name): try: data = self._record[name] except KeyError: raise AttributeError( "object %s has no attribute %s" % (self, name) ) else: # all LDAP attribs are multivalued by default, # even when the schema says they are monovalued if len(data) == 1: return data[0] else: return data[:] def isa(self, objectClass): return objectClass in self.objectClass: root = LdapObject( ('dc=example,dc=com', {'objectClass': ['top', 'dcObject','organization'], 'dc': ['example'], 'o': ['Example Organisation']} )) root.o => 'Example Organisation' root.objectClass => ['top', 'dcObject','organization'] root.isa('organization') => True FWIW, I once started writing an higher-level LDAP api (kind of an Object-LDAP Mapper...) using descriptors for ldap attribute access, but I never finished the damned thing, and it's in a very sorry state. I'll have to get back to it one day... > and build the python buttons around this, but i was hoping someone > would be able to point me in the correct direction of how to do this? > Is there a parser available? cf above. -- http://mail.python.org/mailman/listinfo/python-list