from constrictor.log import *
import eg_utils
from oils.const import *
-from osrf.net_obj import *
+import osrf.net_obj
TASKS = {}
kw[pickup_lib]
'''
# construct the hold object
- hold = osrfNetworkObject.ahr()
+ hold = osrf.net_obj.NetworkObject.ahr()
hold.pickup_lib(kw['pickup_lib'])
hold.usr(kw['patron_id'])
hold.target(kw['title_id'])
eg_utils.initThread()
dm = DataManager()
patronID = dm.getThreadData(PROP_PATRON_IDS)
- scriptThread.userData = doTitleHoldFetchAll(patronID)
- logDebug("init: grabbed existing holds %s" % str([ int(i) for i in scriptThread.userData]))
def run(self):
pickupLib = dm.getThreadData(PROP_ORG_IDS)
patronID = dm.getThreadData(PROP_PATRON_IDS)
- doTitleHold(titleID, patronID, pickupLib)
-
- # XXX TODO update EG to return hold IDs for new holds so
- # that this script does not have to manually sort through
- # the holds to find what to clean up
-
- # go ahead and cancel any new holds
- allHolds = doTitleHoldFetchAll(patronID)
- logDebug("grabbed all holds %s" % str([ int(i) for i in allHolds]))
-
- scriptThread = ScriptThread.currentScriptThread()
- cancelHolds = [ h for h in allHolds if h not in scriptThread.userData ]
-
- for hold in cancelHolds:
- doTitleHoldCancel(hold)
+ hold_id = doTitleHold(titleID, patronID, pickupLib)
+ if hold_id:
+ doTitleHoldCancel(hold_id)
"TitleHoldPermit(%s, %s, %s) failed -> %s" % (
titleID, patronID, pickupLib, osrf.json.to_json(evt)))
- if str(evt) != '1':
+ if str(evt['success']) != '1':
logInfo("TitleHoldPermit(%s, %s, %s) not allowed -> %s" % (
titleID, patronID, pickupLib, evt))
return None
return
evt = TASKS['TitleHoldTask'].run(title_id=titleID, patron_id=patronID, pickup_lib=pickupLib)
+
+ logInfo("title task returned %s" % str(evt))
if isinstance(evt, list):
evts = []
logInfo("TitleHold(%s, %s, %s) -> %s" % (titleID, patronID, pickupLib, Event.parse_event(evt).code))
return None
- if str(evt) != '1':
+ if str(evt) == '-1':
logInfo("TitleHold(%s, %s, %s) placement failed: %s" % (
titleID, patronID, pickupLib, str(evt)))
return None
logInfo('TitleHold(%s, %s, %s) -> SUCCESS' % (titleID, patronID, pickupLib))
- return True
+ return int(evt) # new hold ID
def doTitleHoldCancel(holdID):
evt = TASKS['TitleHoldCancelTask'].run(hold_id=holdID)
- evt_txt = Event.parse_event(evt).text_code
if Event.parse_event(evt):
+ evt_txt = Event.parse_event(evt).text_code
if evt_txt == 'ACTION_HOLD_REQUEST_NOT_FOUND':
return True
raise ILSEventException(