From: Dan Scott Date: Mon, 16 Jan 2012 22:53:27 +0000 (-0500) Subject: LDAP sync: If EG user found, reactivate X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=df3dd8886668ab689f2a2c389dfa25c0609a5d9f;p=contrib%2FConifer.git LDAP sync: If EG user found, reactivate In theory, we won't be asked to create a user that already exists in Evergreen if they are already there and active. So, go ahead and set the "active" flag to true and update the account expiry date when we are asked to create an existing user. Signed-off-by: Dan Scott --- diff --git a/tools/patron-load/ldap_osrf_sync b/tools/patron-load/ldap_osrf_sync index 04fef38964..5e26823a7a 100755 --- a/tools/patron-load/ldap_osrf_sync +++ b/tools/patron-load/ldap_osrf_sync @@ -405,6 +405,23 @@ def find_evergreen_user(auth, user): return None +def retrieve_evergreen_user(auth, user, uid): + """ + Update account for an existing user in Evergreen + + Sets active flag, updates expiry date + """ + + egau = osrf_request( + 'open-ils.actor', 'open-ils.actor.user.retrieve', auth, uid + ).send() + + if not egau: + print sys.stderr >> "Damn it" + + return egau + + def create_evergreen_user(auth, user): """ Map LDAP record to Evergreen user @@ -421,32 +438,36 @@ def create_evergreen_user(auth, user): return found = find_evergreen_user(auth, user) - if found: - print("Found: %s" % user.usrname) - return - newau = osrf.net_obj.new_object_from_hint('au') + egau = osrf.net_obj.new_object_from_hint('au') - newau.isnew(True) - newau.usrname(user.usrname) - newau.profile(user.profile) - newau.email(user.email) - newau.family_name(user.family_name) - newau.first_given_name(user.first_given_name) - newau.ident_type(user.ident_type) - newau.ident_value(user.ident_value) - newau.home_ou(user.home_ou) - newau.passwd(user.passwd) - newau.expire_date(user.expire_date) + if found: + print("Found: %s" % user.usrname) + egau = retrieve_evergreen_user(auth, user, found) + egau.ischanged(True) + egau.active(True) + else: + egau.isnew(True) + + egau.usrname(user.usrname) + egau.profile(user.profile) + egau.email(user.email) + egau.family_name(user.family_name) + egau.first_given_name(user.first_given_name) + egau.ident_type(user.ident_type) + egau.ident_value(user.ident_value) + egau.home_ou(user.home_ou) + egau.passwd(user.passwd) + egau.expire_date(user.expire_date) # Workaround open-ils.actor.patron.update bug - newau.addresses([]) - newau.cards([]) + egau.addresses([]) + egau.cards([]) - # Create the user + # Create or update the user try: usr = osrf_request( - 'open-ils.actor', 'open-ils.actor.patron.update', auth, newau + 'open-ils.actor', 'open-ils.actor.patron.update', auth, egau ).send() except Exception, exc: print >> sys.stderr, exc @@ -458,6 +479,10 @@ def create_evergreen_user(auth, user): AuthException(evt.text_code), user.usrname) return None + if found: + # Do not generate a barcode for the user + return + # Generate a barcode for the user try: barcode = osrf_request( @@ -476,9 +501,9 @@ def create_evergreen_user(auth, user): user.barcode = barcode['evergreen.lu_update_barcode'] - create_stat_cats(newau, user) + create_stat_cats(egau, user) - print("Created: %s with barcode %s" % (newau.usrname(), user.barcode)) + print("Created: %s with barcode %s" % (egau.usrname(), user.barcode)) return user.barcode def update_ldap_barcode(con, user): @@ -576,6 +601,9 @@ def parse_args(): parser.add_argument('--query-date', help='Search LDAP for users created since (YYYYMMDDHHMMSSZ)' ) + parser.add_argument('--find-eg-user', + help='Find Evergreen user by user name' + ) parser.add_argument('-U', '--eg-user', nargs='?', help='Evergreen user name', default=credentials.OSRF_USER ) @@ -619,6 +647,19 @@ def main(): # Log in and get an authtoken AUTHTOKEN = osrf_login(ARGS.eg_user, ARGS.eg_password, ARGS.eg_workstation) + if ARGS.find_eg_user: + class QuickUser: + "A quick and dirty user class" + pass + user = QuickUser() + user.ident_value = ARGS.find_eg_user + user.email = ARGS.find_eg_user + user.usrname = ARGS.find_eg_user + uid = find_evergreen_user(AUTHTOKEN, user) + if uid: + print "Found Evergreen user: %s" % (uid) + sys.exit() + try: con = ldap.initialize(ARGS.ldap_server) con.set_option(ldap.OPT_REFERRALS, 0)