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.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."""
|
||||||
|
|
||||||
|
@ -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')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user