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
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
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(
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):
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
)
# 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)