def checkInstitutionRetentionsbyOCLCNumber(event, context): item_file = handle_files.readFilesFromBucket(event) csv_read = handle_files.loadCSV(item_file) csv_read = process_data.retrieveInstitutionRetentionsbyOCLCNumber( processConfig, csv_read) handle_files.saveFileToBucket(fileInfo['bucket'], fileInfo['key'] + "_updated", csv_read)
def process(args): item_file = handle_files.readFileFromLocal(args.itemFile) operation = args.operation output_dir = args.outputDir # get a token scope = ['WorldCatMetadataAPI'] try: oauth_session = make_requests.createOAuthSession(config, scope) config.update({"oauth-session": oauth_session}) processConfig = config csv_read = handle_files.loadCSV(item_file) if operation == "getCurrentOCLCNumbers": csv_read = process_data.retrieveCurrentOCLCNumbers(processConfig, csv_read) elif operation == "retrieveMergedOCLCNumbers": csv_read = process_data.retrieveMergedOCLCNumbers(processConfig, csv_read) elif operation == "setHoldingsbyOCLCNumber": csv_read = process_data.setHoldingsbyOCLCNumber(processConfig, csv_read) elif operation == "deleteHoldingsbyOCLCNumber": csv_read = process_data.deleteHoldingsbyOCLCNumber(processConfig, csv_read) elif operation == "addLBDs": csv_read = process_data.addLBDs(processConfig, csv_read) return handle_files.saveFileLocal(csv_read, output_dir) except BaseException as err: result = 'no access token ' + str(err) return result
def addLBDs(event, context): item_file = handle_files.readFilesFromBucket(event) csv_read = handle_files.loadCSV(item_file) csv_read = process_data.addLBDs(processConfig, csv_read) handle_files.saveFileToBucket(fileInfo['bucket'], fileInfo['key'] + "_updated", csv_read) return saveFile(bucket, key + "_updated", csv_read)
def deleteHoldingsbyOCLCNumber(event, context): item_file = handle_files.readFilesFromBucket(event) csv_read = handle_files.loadCSV(item_file) csv_read = process_data.deleteHoldingsbyOCLCNumber(processConfig, csv_read) handle_files.saveFileToBucket(fileInfo['bucket'], fileInfo['key'] + "_updated", csv_read) return saveFile(bucket, key + "_updated", csv_read)
def test_retrieveInstitutionRetentionsbyOCLCNumber(mockOAuthSession, getTestConfig, tmpdir, requests_mock): oclcSymbol = 'CCO' requests_mock.register_uri('GET', 'https://americas.discovery.api.oclc.org/worldcat/v2/retained-holdings?oclcNumber=776775878&heldBy=' + oclcSymbol, status_code=200, json=retained_bySymbol) requests_mock.register_uri('GET', 'https://americas.discovery.api.oclc.org/worldcat/v2/retained-holdings?oclcNumber=1702614&heldBy=' + oclcSymbol, status_code=200, json=retained_bySymbol2) item_file = "oclcNumber\n776775878\n1702614" csv_read = handle_files.loadCSV(item_file) getTestConfig.update({"oauth-session": mockOAuthSession}) result = process_data.retrieveInstitutionRetentionsbyOCLCNumber(getTestConfig, csv_read, oclcSymbol) assert type(result) is pandas.DataFrame final_result = pandas.DataFrame(data={"oclcNumber": [776775878, 1702614], "accession_numbers":['236528690', '272142932'], "barcodes": [None, None], "locations": [None, None], "status": ['success', 'success']})
def test_retrieveSPByOCLCNumber(mockOAuthSession, getTestConfig, tmpdir, requests_mock): heldInState = "CA" requests_mock.register_uri('GET', 'https://americas.discovery.api.oclc.org/worldcat/v2/bibs-retained-holdings?oclcNumber=776775878&heldInState=' + heldInState, status_code=200, json=retained_byState) requests_mock.register_uri('GET', 'https://americas.discovery.api.oclc.org/worldcat/v2/bibs-retained-holdings?oclcNumber=1702614&heldInState=' + heldInState, status_code=200, json=retained_byState2) item_file = "oclcNumber\n776775878\n1702614" csv_read = handle_files.loadCSV(item_file) getTestConfig.update({"oauth-session": mockOAuthSession}) result = process_data.retrieveSPByOCLCNumber(getTestConfig, csv_read, heldInState=heldInState) assert type(result) is pandas.DataFrame final_result = pandas.DataFrame(data={"oclcNumber": [776775878, 1702614], "total_holding_count":[50, 395], "retained_symbols": ['CCO', 'CCO'], "status": ['success', 'success']})
def process(args): with open(config_file, 'r') as stream: config = yaml.safe_load(stream) item_file = handle_files.readFileFromLocal(args.itemFile) operation = args.operation output_dir = args.outputDir try: oauth_session = make_requests.createOAuthSession( config, [config.read('scope')]) config.update({"oauth-session": oauth_session}) processConfig = config csv_read = handle_files.loadCSV(item_file) if operation == "retrieveAllInstitutionRetentions": results = [] for index, row in csv_read.iterrows(): csv_read_institution = process_data.retrieveAllInstitutionRetentions( processConfig, row['symbol']) result = handle_files.saveFileLocal(csv_read_institution, output_dir) results.append(row['symbol'] + ": " + result) return ",".join(results) else: if operation == "retrieveMergedOCLCNumbers": csv_read = process_data.retrieveMergedOCLCNumbers( processConfig, csv_read) elif operation == "retrieveHoldingsByOCLCNumber": if hasattr(args, 'heldBy'): heldBy = args.heldBy elif hasattr(args, 'heldByGroup'): heldByGroup = args.heldByGroup csv_read = process_data.retrieveHoldingsByOCLCNumber( processConfig, csv_read, heldByGroup, heldBy) elif operation == "retrieveSPByOCLCNumber": csv_read = process_data.retrieveSPByOCLCNumber( processConfig, csv_read, heldByGroup, heldInState) if hasattr(args, 'heldByGroup'): heldByGroup = args.heldByGroup elif hasattr(args, 'heldInState'): heldInState = args.heldInState elif operation == "retrieveInstitutionRetentionsbyOCLCNumber": heldBy = args.heldBy csv_read = process_data.retrieveInstitutionRetentionsbyOCLCNumber( processConfig, csv_read, heldBy) return handle_files.saveFileLocal(csv_read, output_dir) except BaseException as err: result = 'no access token ' + str(err) return result
def test_retrieveHoldingsByOCLCNumber(mockOAuthSession, getTestConfig, tmpdir, requests_mock): oclcSymbol = "OCPSB" requests_mock.register_uri('GET', 'https://americas.discovery.api.oclc.org/worldcat/v2/bibs-detailed-holdings?oclcNumber=318877925&heldBy=' + oclcSymbol, status_code=200, json=institution_holdings) requests_mock.register_uri('GET', 'https://americas.discovery.api.oclc.org/worldcat/v2/bibs-detailed-holdings?oclcNumber=191865523&heldBy=' + oclcSymbol, status_code=200, json=institution_holdings2) item_file = "oclcNumber\n318877925\n191865523" csv_read = handle_files.loadCSV(item_file) getTestConfig.update({"oauth-session": mockOAuthSession}) result = process_data.retrieveHoldingsByOCLCNumber(getTestConfig, csv_read, heldBy=oclcSymbol) assert type(result) is pandas.DataFrame final_result = pandas.DataFrame(data={"oclcNumber": [318877925, 191865523], "total_holding_count":[246, 3355], "holding_symbols": ['OCPSB', 'OCPSB'], "status": ['success', 'success']}) assert_frame_equal(result, final_result)
def test_retrieveMergedOCLCNumbers(mockOAuthSession, getTestConfig, tmpdir, requests_mock): requests_mock.register_uri('GET', 'https://americas.discovery.api.oclc.org/worldcat/v2/bibs/311684437', status_code=200, json=merged_oclcnumbers) requests_mock.register_uri('GET', 'https://americas.discovery.api.oclc.org/worldcat/v2/bibs/318877925', status_code=200, json=merged_oclcnumbers2) item_file = "oclcNumber\n311684437\n318877925" csv_read = handle_files.loadCSV(item_file) getTestConfig.update({"oauth-session": mockOAuthSession}) result = process_data.retrieveMergedOCLCNumbers(getTestConfig, csv_read) assert type(result) is pandas.DataFrame #assert result.columns == ["oclcNumber", "mergedOCNs", "status"] final_result = pandas.DataFrame(data={"oclcNumber": [311684437, 318877925], "mergedOCNs":['261176486,330361568,377707240,426228842,701739996,716923895,731216527,887752101,945738851', '877908501,979175514,981548811,990719089,993246604,1005002644,1011917725,1016539262,1020206933,1057597575'], "status": ['success', 'success']}) assert_frame_equal(result, final_result)
def getInstitutionRetentions(event, context): item_file = handle_files.readFilesFromBucket(event) csv_read = handle_files.loadCSV(item_file) results = [] for index, row in csv_read.iterrows(): retained_holdings = process_data.retrieveAllInstitutionRetentions( processConfig, row['symbol']) result = handle_files.saveFileToBucket( fileInfo['bucket'], fileInfo['key'] + "_" + row['symbol'] + "_retained", retained_holdings) results.append(row['symbol'] + ": " + result) return ",".join(results)
def getMergedOCLCNumbers(event, context): item_file = handle_files.readFilesFromBucket(event) csv_read = handle_files.loadCSV(item_file) csv_read = process_data.retrieveMergedOCLCNumbers(processConfig, csv_read) handle_files.saveFileToBucket(fileInfo['bucket'], fileInfo['key'] + "_updated", csv_read)