summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/swig/Ldb.py
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2006-05-02 05:14:00 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:05:31 -0500
commit684aa5adef7c8f61e626983ef2a79156fcb14f3d (patch)
tree9fcae0a4ad95a433f377b8d8ee3564f5a1e16600 /source4/lib/ldb/swig/Ldb.py
parent827cdb949ba22e05f88c03028acb747ca437f4e3 (diff)
downloadsamba-684aa5adef7c8f61e626983ef2a79156fcb14f3d.tar.gz
samba-684aa5adef7c8f61e626983ef2a79156fcb14f3d.tar.bz2
samba-684aa5adef7c8f61e626983ef2a79156fcb14f3d.zip
r15389: Add some better torture tests for LdbMessage.
Fix up behaviour of Ldb.__setitem__() function. It should overwrite the element data. Add wrapper for ldb_msg_sanity_check(). (This used to be commit d67e055f86a62d0e61fd20d75b252a6211618f7b)
Diffstat (limited to 'source4/lib/ldb/swig/Ldb.py')
-rw-r--r--source4/lib/ldb/swig/Ldb.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/source4/lib/ldb/swig/Ldb.py b/source4/lib/ldb/swig/Ldb.py
index e78d56efda..c7e6191c8a 100644
--- a/source4/lib/ldb/swig/Ldb.py
+++ b/source4/lib/ldb/swig/Ldb.py
@@ -20,6 +20,15 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
+#
+# Interface notes:
+#
+# - should an empty dn be represented as None, or an empty string?
+#
+# - should single-valued attributes be a string, or a list with one
+# element?
+#
+
from ldb import *
# Global initialisation
@@ -62,6 +71,9 @@ class LdbMessage:
def __setattr__(self, attr, value):
if attr == 'dn':
self.msg.dn = ldb_dn_explode(self.msg, value)
+ if self.msg.dn == None:
+ err = LDB_ERR_INVALID_DN_SYNTAX
+ raise LdbError(err, ldb_strerror(err))
return
self.__dict__[attr] = value
@@ -78,6 +90,7 @@ class LdbMessage:
for i in range(elt.num_values)]
def __setitem__(self, key, value):
+ ldb_msg_remove_attr(self.msg, key)
if type(value) in (list, tuple):
[ldb_msg_add_value(self.msg, key, v) for v in value]
else:
@@ -99,6 +112,11 @@ class LdbMessage:
def items(self):
return [(k, self[k]) for k in self.keys()]
+ # Misc stuff
+
+ def sanity_check(self):
+ return ldb_msg_sanity_check(self.msg)
+
class Ldb:
"""A class representing a binding to a ldb file."""