diff options
Diffstat (limited to 'source4/scripting/swig/Ldb.py')
-rw-r--r-- | source4/scripting/swig/Ldb.py | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/source4/scripting/swig/Ldb.py b/source4/scripting/swig/Ldb.py deleted file mode 100644 index f761aec398..0000000000 --- a/source4/scripting/swig/Ldb.py +++ /dev/null @@ -1,102 +0,0 @@ -"""Provide a more Pythonic and object-oriented interface to ldb.""" - -# -# Swig interface to Samba -# -# Copyright (C) Tim Potter 2006 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# - -import ldb - -class LdbElement: - """A class representing a ldb element as an array of values.""" - - def __init__(self, elt): - self.name = elt.name - self.flags = elt.flags - self.values = [ldb.ldb_val_array_getitem(elt.values, x) - for x in range(elt.num_values)] - - def __repr__(self): - return '<%s(name=%s) instance at 0x%x' % (self.__class__.__name__, - `self.name`, id(self)) - - def __len__(self): - return self.values.len() - - def __getitem__(self, key): - return self.values[key] - -class LdbMessage: - """A class representing a ldb message as a dict of ldb elements.""" - - 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__, - `self.dn`, id(self)) - - def __getitem__(self, key): - return self.elements[key] - - def keys(self): - return self.elements.keys() - -class Ldb: - """A class representing a binding to a ldb file.""" - - def __init__(self): - self.mem_ctx = ldb.talloc_init('python ldb') - self.ldb_ctx = ldb.init(self.mem_ctx) - - def __del__(self): - ldb.talloc_free(self.mem_ctx) - - def connect(self, url, flags = 0): - ldb.connect(self.ldb_ctx, url, flags, None) - - def search(self, expression): - - result = ldb.search(self.ldb_ctx, None, ldb.LDB_SCOPE_DEFAULT, - expression, None); - - return [LdbMessage(ldb.ldb_message_ptr_array_getitem(result.msgs, ndx)) - for ndx in range(result.count)] - - def delete(self, dn): - if ldb.delete(self.ldb_ctx, dn) != 0: - raise IOError, ldb.errstring(self.ldb_ctx) - - def rename(self, olddn, newdn): - if ldb.rename(self.ldb_ctx, olddn, newdn) != 0: - raise IOError, ldb.errstring(self.ldb_ctx) - - def add(self, msg): - ldb.add(self.ldb_ctx, msg) |