From: Peter Palfrader Date: Mon, 2 Aug 2010 23:48:02 +0000 (+0000) Subject: A class shouldn't write to stderr on error, it should throw an exception X-Git-Tag: userdir-ldap-0.3.78~4 X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap.git;a=commitdiff_plain;h=b6f36909f626ad4c95ae63996583e34f23d77ff1 A class shouldn't write to stderr on error, it should throw an exception --- diff --git a/UDLdap.py b/UDLdap.py index 2e45092..0155345 100644 --- a/UDLdap.py +++ b/UDLdap.py @@ -16,11 +16,9 @@ class Account: def from_search(ldap_connection, base, user): searchresult = ldap_connection.search_s(base, ldap.SCOPE_SUBTREE, 'uid=%s'%(user)) if len(searchresult) < 1: - sys.stderr.write("No such user: %s\n"%(user)) - return + raise IndexError, "No such user: %s\n"%(user) elif len(searchresult) > 1: - sys.stderr.write("More than one hit when getting %s\n"%(user)) - return + raise IndexError, "More than one hit when getting %s\n"%(user) else: return Account(searchresult[0][0], searchresult[0][1]) diff --git a/ud-lock b/ud-lock index a274274..7e8725d 100755 --- a/ud-lock +++ b/ud-lock @@ -48,7 +48,11 @@ def connect(user): return l def do_one_user(lc, user, ticket): - u = UDLdap.Account.from_search(lc, BaseDn, user) + try: + u = UDLdap.Account.from_search(lc, BaseDn, user) + except IndexError, e: + sys.stderr.write("Cannot instantiate account from LDAP: %s"%(str(e))) + return if not u['accountStatus'] == 'active': sys.stderr.write('%s: Account is not active, skipping. (details: %s)\n'%(user, u.verbose_status())) return