diff options
author | Tim Potter <tpot@samba.org> | 2006-04-04 22:15:27 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:00:16 -0500 |
commit | 9956009a41f2489abefa0a7a21553fb0b78e1fed (patch) | |
tree | 8812f70922bfd5620d740a2b5f7550e6f6b26faa /source4/scripting | |
parent | 1385cd968bf94dd9b9b252bc679667568845c682 (diff) | |
download | samba-9956009a41f2489abefa0a7a21553fb0b78e1fed.tar.gz samba-9956009a41f2489abefa0a7a21553fb0b78e1fed.tar.bz2 samba-9956009a41f2489abefa0a7a21553fb0b78e1fed.zip |
r14915: Work in progress - getting ldb_add() working.
(This used to be commit d50661ed4ef3f6c96811649a1acbe5d702e80654)
Diffstat (limited to 'source4/scripting')
-rw-r--r-- | source4/scripting/swig/Ldb.py | 22 | ||||
-rw-r--r-- | source4/scripting/swig/ldb.i | 24 |
2 files changed, 38 insertions, 8 deletions
diff --git a/source4/scripting/swig/Ldb.py b/source4/scripting/swig/Ldb.py index 995f421beb..f761aec398 100644 --- a/source4/scripting/swig/Ldb.py +++ b/source4/scripting/swig/Ldb.py @@ -44,14 +44,20 @@ class LdbElement: class LdbMessage: """A class representing a ldb message as a dict of ldb elements.""" - def __init__(self, msg): - self.dn = msg.dn - self.private_data = msg.private_data - eltlist = \ - [LdbElement(ldb.ldb_message_element_array_getitem(msg.elements, x)) - for x in range(msg.num_elements)] - self.elements = \ - dict([(x.name, x) for x in eltlist]) + def __init__(self, msg = None): + + self.dn = None + self.private_data = None + self.elements = [] + + if msg is not None: + self.dn = msg.dn + self.private_data = msg.private_data + eltlist = \ + [LdbElement(ldb.ldb_message_element_array_getitem( + msg.elements, x)) + for x in range(msg.num_elements)] + self.elements = dict([(x.name, x) for x in eltlist]) def __repr__(self): return '<%s(dn=%s) instance at 0x%x>' % (self.__class__.__name__, diff --git a/source4/scripting/swig/ldb.i b/source4/scripting/swig/ldb.i index 6930ea4c9b..31c1ffe3e4 100644 --- a/source4/scripting/swig/ldb.i +++ b/source4/scripting/swig/ldb.i @@ -156,6 +156,30 @@ struct ldb_message { void *private_data; /* private to the backend */ }; +%typemap(in) struct ldb_message * { + PyObject *obj, *key, *value; + int pos; + + $1 = ldb_msg_new(NULL); + + obj = PyObject_GetAttrString($input, "dn"); + $1->dn = ldb_dn_explode(NULL, PyString_AsString(obj)); + + obj = PyObject_GetAttrString($input, "private_data"); + $1->private_data = PyString_AsString(obj); + + obj = PyObject_GetAttrString($input, "elements"); + + pos = 0; + while (PyDict_Next(obj, &pos, &key, &value)) { + struct ldb_val v; + + v.data = PyString_AsString(value); + v.length = PyString_Size(value); + ldb_msg_add_value($1, PyString_AsString(key), &v); + } +} + /* * Wrap struct ldb_result */ |