s4-samdb: added deleteuser() to samdb
[ira/wip.git] / source4 / scripting / python / samba / samdb.py
index 70f73da6f4e16da0d0a92839d381272a0a8a5e7a..f8369d6c5a6452e9a259dbbead432e4da978812e 100644 (file)
@@ -393,6 +393,29 @@ member: %s
         else:
             self.transaction_commit()
 
+
+    def deleteuser(self, username):
+        """Deletes a user
+
+        :param username: Name of the target user
+        """
+
+        filter = "(&(sAMAccountName=%s)(objectCategory=%s,%s))" % (ldb.binary_encode(username), "CN=Person,CN=Schema,CN=Configuration", self.domain_dn())
+        self.transaction_start()
+        try:
+            target = self.search(base=self.domain_dn(), scope=ldb.SCOPE_SUBTREE,
+                                 expression=filter, attrs=[])
+            if len(target) == 0:
+                raise Exception('Unable to find user "%s"' % username)
+            assert(len(target) == 1)
+            self.delete(target[0].dn)
+        except Exception:
+            self.transaction_cancel()
+            raise
+        else:
+            self.transaction_commit()
+
+
     def setpassword(self, search_filter, password,
             force_change_at_next_login=False, username=None):
         """Sets the password for a user