1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-12 20:58:37 +03:00

r15348: Start adding a dict interface and tests to LdbMessage class.

(This used to be commit 7e30e8ba57efe37314ebca02f964420f56b9eb52)
This commit is contained in:
Tim Potter 2006-04-30 01:08:52 +00:00 committed by Gerald (Jerry) Carter
parent ec4421d126
commit 5abd8940f9
2 changed files with 32 additions and 11 deletions

View File

@ -52,6 +52,8 @@ class LdbMessage:
self.mem_ctx = None self.mem_ctx = None
self.msg = None self.msg = None
# Make the dn attribute of the object dynamic
def __getattr__(self, attr): def __getattr__(self, attr):
if attr == 'dn': if attr == 'dn':
return ldb_dn_linearize(None, self.msg.dn) return ldb_dn_linearize(None, self.msg.dn)
@ -63,8 +65,7 @@ class LdbMessage:
return return
self.__dict__[attr] = value self.__dict__[attr] = value
def len(self): # Get and set individual elements
return self.msg.num_elements
def __getitem__(self, key): def __getitem__(self, key):
@ -81,7 +82,23 @@ class LdbMessage:
[ldb_msg_add_value(self.msg, key, v) for v in value] [ldb_msg_add_value(self.msg, key, v) for v in value]
else: else:
ldb_msg_add_value(self.msg, key, value) ldb_msg_add_value(self.msg, key, value)
# Dictionary interface
# TODO: move to iterator based interface
def len(self):
return self.msg.num_elements
def keys(self):
return [ldb_message_element_array_getitem(self.msg.elements, i).name
for i in range(self.msg.num_elements)]
def values(self):
return [self[k] for k in self.keys()]
def items(self):
return [(k, self[k]) for k in self.keys()]
class Ldb: class Ldb:
"""A class representing a binding to a ldb file.""" """A class representing a binding to a ldb file."""

View File

@ -1,14 +1,18 @@
#!/usr/bin/python #!/usr/bin/python
import Ldb import Ldb, sys
def fail(msg): def test(cond, msg):
print 'FAILED:', msg if not cond:
sys.exit(1) print 'FAILED:', msg
sys.exit(1)
l = Ldb.Ldb() # Torture LdbMessage
l.connect('tdb:///tmp/foo.ldb') m = Ldb.LdbMessage()
result = l.search('(dn=*)') m['animal'] = 'dog'
m['name'] = 'spotty'
print result test(m.keys() == ['animal', 'name'], 'keys() test failed')
test(m.values() == [['dog'], ['spotty']], 'values() test failed')
test(m.items() == [('animal', ['dog']), ('name', ['spotty'])], 'items() test failed')