Skip to content

Commit 0ef6201

Browse files
author
Karen Coombs
committed
Added function for getting latestEdition
1 parent 690f4b9 commit 0ef6201

File tree

4 files changed

+49
-6
lines changed

4 files changed

+49
-6
lines changed

handler.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,13 @@ def addLBDs(event, context):
4848
csv_read = process_data.addLBDs(processConfig, csv_read)
4949
handle_files.saveFileToBucket(fileInfo['bucket'], fileInfo['key'] + "_updated", csv_read)
5050

51-
return saveFile(bucket, key + "_updated", csv_read)
51+
return saveFile(bucket, key + "_updated", csv_read)
52+
53+
def getLatestEdition(event, context):
54+
item_file = handle_files.readFilesFromBucket(event)
55+
csv_read = handle_files.loadCSV(item_file)
56+
csv_read = process_data.getLatestEdition(processConfig, csv_read)
57+
handle_files.saveFileToBucket(fileInfo['bucket'], fileInfo['key'] + "_updated", csv_read)
58+
59+
return saveFile(bucket, key + "_updated", csv_read)
5260

processSheet.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def processArgs():
1212
try:
1313
parser = argparse.ArgumentParser()
1414
parser.add_argument('--itemFile', required=True, help='File you want to process')
15-
parser.add_argument('--operation', required=True, choices=['getCurrentOCLCNumbers', 'retrieveMergedOCLCNumbers', 'setHoldingsbyOCLCNumber', 'deleteHoldingsbyOCLCNumber', 'addLBDs'], help='Operation to run: getCurrentOCLCNumbers, retrieveMergedOCLCNumbers, setHoldingsbyOCLCNumber, deleteHoldingsbyOCLCNumber, addLBDs')
15+
parser.add_argument('--operation', required=True, choices=['getCurrentOCLCNumbers', 'retrieveMergedOCLCNumbers', 'setHoldingsbyOCLCNumber', 'deleteHoldingsbyOCLCNumber', 'addLBDs', 'getLatestEdition'], help='Operation to run: getCurrentOCLCNumbers, retrieveMergedOCLCNumbers, setHoldingsbyOCLCNumber, deleteHoldingsbyOCLCNumber, addLBDs')
1616
parser.add_argument('--outputDir', required=True, help='Directory to save output to')
1717

1818
args = parser.parse_args()
@@ -43,8 +43,10 @@ def process(args):
4343
elif operation == "deleteHoldingsbyOCLCNumber":
4444
csv_read = process_data.deleteHoldingsbyOCLCNumber(processConfig, csv_read)
4545
elif operation == "addLBDs":
46-
csv_read = process_data.addLBDs(processConfig, csv_read)
47-
46+
csv_read = process_data.addLBDs(processConfig, csv_read)
47+
elif operation == "getLatestEdition":
48+
csv_read = process_data.getLatestEdition(processConfig, csv_read)
49+
4850
return handle_files.saveFileLocal(csv_read, output_dir)
4951

5052
except BaseException as err:

src/make_requests.py

+30
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,33 @@ def findBibMatch(config, record):
199199
except requests.exceptions.HTTPError as err:
200200
status = "failed"
201201
return pd.Series([oclcNumber, status])
202+
203+
def getLatestEdition(config, oclcNumber):
204+
oauth_session = config.get('oauth-session')
205+
requestURL = config.get('metadata_service_url') + "/brief-bibs/" + str(oclcNumber) + "/other-editions?inLanguage=eng&limit=1&orderBy=publicationDateDesc"
206+
try:
207+
r = requests.get(requestURL, headers={"Accept":"application/json"})
208+
r.raise_for_status
209+
try:
210+
result = r.json()
211+
if result.get('briefRecords'):
212+
if (str(oclcNumber) == result.get('briefRecords')[0].get('oclcNumber')):
213+
isLatestEdition = "true"
214+
elif (result.get('briefRecords')[0].get('mergedOclcNumbers') and str(oclcNumber) in result.get('briefRecords')[0].get('mergedOclcNumbers')):
215+
isLatestEdition = "true"
216+
else:
217+
isLatestEdition = "false"
218+
latestEditionOCN = result.get('briefRecords')[0].get('oclcNumber')
219+
latestEditionYear = result.get('briefRecords')[0].get('date')
220+
else:
221+
isLatestEdition = ""
222+
latestEditionOCN = ""
223+
latestEditionYear = ""
224+
except json.decoder.JSONDecodeError:
225+
isLatestEdition = ""
226+
latestEditionOCN = ""
227+
latestEditionYear = ""
228+
except requests.exceptions.HTTPError as err:
229+
status = "failed"
230+
231+
return pd.Series([isLatestEdition, latestEditionOCN, latestEditionYear, status])

src/process_data.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,8 @@ def deleteHoldingsbyOCLCNumber(processConfig, csv_read):
2121

2222
def addLBDs(processConfig, csv_read):
2323
csv_read[['oclcnumber', 'lbd_number', 'status']] = csv_read.apply (lambda row: addLBD(row['oclcNumber'], row['note']), axis=1)
24-
return csv_read
25-
24+
return csv_read
25+
26+
def getLatestEdition(processConfig, csv_read):
27+
csv_read[['oclcnumber', 'isLatestEdition', 'latestEditionOCN', 'year', 'status']] = csv_read.apply (lambda row: getLatestEdition(row['oclcNumber']), axis=1)
28+
return csv_read

0 commit comments

Comments
 (0)