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:
parent
ec4421d126
commit
5abd8940f9
@ -52,6 +52,8 @@ class LdbMessage:
|
||||
self.mem_ctx = None
|
||||
self.msg = None
|
||||
|
||||
# Make the dn attribute of the object dynamic
|
||||
|
||||
def __getattr__(self, attr):
|
||||
if attr == 'dn':
|
||||
return ldb_dn_linearize(None, self.msg.dn)
|
||||
@ -63,8 +65,7 @@ class LdbMessage:
|
||||
return
|
||||
self.__dict__[attr] = value
|
||||
|
||||
def len(self):
|
||||
return self.msg.num_elements
|
||||
# Get and set individual elements
|
||||
|
||||
def __getitem__(self, key):
|
||||
|
||||
@ -81,7 +82,23 @@ class LdbMessage:
|
||||
[ldb_msg_add_value(self.msg, key, v) for v in value]
|
||||
else:
|
||||
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:
|
||||
"""A class representing a binding to a ldb file."""
|
||||
|
||||
|
@ -1,14 +1,18 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import Ldb
|
||||
import Ldb, sys
|
||||
|
||||
def fail(msg):
|
||||
print 'FAILED:', msg
|
||||
sys.exit(1)
|
||||
def test(cond, msg):
|
||||
if not cond:
|
||||
print 'FAILED:', msg
|
||||
sys.exit(1)
|
||||
|
||||
l = Ldb.Ldb()
|
||||
# Torture LdbMessage
|
||||
|
||||
l.connect('tdb:///tmp/foo.ldb')
|
||||
result = l.search('(dn=*)')
|
||||
m = Ldb.LdbMessage()
|
||||
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')
|
||||
|
Loading…
x
Reference in New Issue
Block a user