Skip to content

Commit 28edbb3

Browse files
author
ehanson8
committed
updates
1 parent e1461de commit 28edbb3

File tree

4 files changed

+202
-6
lines changed

4 files changed

+202
-6
lines changed

createItemMetadataFromCSV.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def createMetadataElementCSV (key, valueSource, language):
1313
metadata.append(metadataElement)
1414
else:
1515
pass
16-
16+
1717
def createMetadataElementCSVSplitField (key, valueSource, language):
1818
if row[valueSource] != '':
1919
if '|' in row[valueSource]:
@@ -54,7 +54,7 @@ def createMetadataElementDirect (key, value, language):
5454
createMetadataElementCSV('fileIdentifier', '????', '')
5555
createMetadataElementCSV('dc.contributor.author', '????', '')
5656
createMetadataElementCSV('dc.contributor.other', '????', '')
57-
createMetadataElementCSV('dc.date.created', '????', '')
57+
createMetadataElementCSV('dc.date.issued', '????', '')
5858
createMetadataElementCSV('dc.description.abstract', '????', 'en_US')
5959
createMetadataElementCSV('dc.format.extent', '????', '')
6060
createMetadataElementDirect('dc.format.mimetype', '????', 'en_US')

editBitstreamsNames.py

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import json
2+
import requests
3+
import secrets
4+
import time
5+
import urllib3
6+
import csv
7+
from datetime import datetime
8+
import argparse
9+
10+
parser = argparse.ArgumentParser()
11+
parser.add_argument('-f', '--fileName', help='the name of the CSV with the bitstream name changes. optional - if not provided, the script will ask for input')
12+
args = parser.parse_args()
13+
if args.uri:
14+
fileName = args.fileName
15+
else:
16+
fileName = raw_input('Enter file name: ')
17+
18+
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
19+
20+
secretsVersion = raw_input('To edit production server, enter the name of the secrets file: ')
21+
if secretsVersion != '':
22+
try:
23+
secrets = __import__(secretsVersion)
24+
print 'Editing Production'
25+
except ImportError:
26+
print 'Editing Stage'
27+
else:
28+
print 'Editing Stage'
29+
30+
baseURL = secrets.baseURL
31+
email = secrets.email
32+
password = secrets.password
33+
filePath = secrets.filePath
34+
verify = secrets.verify
35+
36+
startTime = time.time()
37+
data = {'email':email,'password':password}
38+
header = {'content-type':'application/json','accept':'application/json'}
39+
session = requests.post(baseURL+'/rest/login', headers=header, verify=verify, params=data).cookies['JSESSIONID']
40+
cookies = {'JSESSIONID': session}
41+
headerFileUpload = {'accept':'application/json'}
42+
cookiesFileUpload = cookies
43+
status = requests.get(baseURL+'/rest/status', headers=header, cookies=cookies, verify=verify).json()
44+
print 'authenticated'
45+
46+
f=csv.writer(open(filePath+'editBitstreamName'+datetime.now().strftime('%Y-%m-%d %H.%M.%S')+'.csv', 'wb'))
47+
f.writerow(['itemID']+['oldBitstreamName']+['newBitstreamName']+['post'])
48+
with open(fileName) as csvfile:
49+
reader = csv.DictReader(csvfile)
50+
for row in reader:
51+
oldValue = row['oldFileId']
52+
newValue = row['newFileId']
53+
handle = row['handle']
54+
endpoint = baseURL+'/rest/handle/'+handle
55+
item = requests.get(endpoint, headers=header, cookies=cookies, verify=verify).json()
56+
itemID = str(item['uuid'])
57+
bitstreams = requests.get(baseURL+'/rest/items/'+itemID+'/bitstreams', headers=header, cookies=cookies, verify=verify).json()
58+
for bitstream in bitstreams:
59+
oldBitstreamName = bitstream['name']
60+
bitstreamID = bitstream['link']
61+
updatedBitstream = json.dumps(bitstream)
62+
print json.dumps(bitstream)
63+
updatedBitstream = updatedBitstream.replace(oldValue,newValue)
64+
post = requests.put(baseURL+bitstreamID, headers=header, cookies=cookies, verify=verify, data=updatedBitstream)
65+
print post
66+
f.writerow([itemID]+[oldValue]+[newValue]+[post])
67+
updatedItemMetadataList = []
68+
metadata = requests.get(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify).json()
69+
for l in range (0, len (metadata)):
70+
metadata[l].pop('schema', None)
71+
metadata[l].pop('element', None)
72+
metadata[l].pop('qualifier', None)
73+
updatedItemMetadataList.append(metadata[l])
74+
provNote = 'Bitstream name changed from ' + oldValue + ' to ' + newValue + ' through a batch process on '+datetime.now().strftime('%Y-%m-%d %H:%M:%S')+'.'
75+
provNoteElement = {}
76+
provNoteElement['key'] = 'dc.description.provenance'
77+
provNoteElement['value'] = unicode(provNote)
78+
provNoteElement['language'] = 'en_US'
79+
updatedItemMetadataList.append(provNoteElement)
80+
updatedItemMetadata = json.dumps(updatedItemMetadataList)
81+
delete = requests.delete(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify)
82+
print delete
83+
post = requests.put(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify, data=updatedItemMetadata)
84+
print post
85+
86+
logout = requests.post(baseURL+'/rest/logout', headers=header, cookies=cookies, verify=verify)
87+
88+
elapsedTime = time.time() - startTime
89+
m, s = divmod(elapsedTime, 60)
90+
h, m = divmod(m, 60)
91+
print 'Total script run time: ', '%d:%02d:%02d' % (h, m, s)

extractSubstrings.py

Lines changed: 0 additions & 4 deletions
This file was deleted.

overwriteExistingMetadata.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
import json
2+
import requests
3+
import secrets
4+
import time
5+
import csv
6+
from datetime import datetime
7+
import urllib3
8+
import argparse
9+
10+
parser = argparse.ArgumentParser()
11+
parser.add_argument('-f', '--fileName', help='the name of the CSV with handles and file identifiers. optional - if not provided, the script will ask for input')
12+
args = parser.parse_args()
13+
if args.fileName:
14+
fileName = args.fileName
15+
else:
16+
fileName = raw_input('Enter file name: ')
17+
18+
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
19+
20+
secretsVersion = raw_input('To edit production server, enter the name of the secrets file: ')
21+
if secretsVersion != '':
22+
try:
23+
secrets = __import__(secretsVersion)
24+
print 'Editing Production'
25+
except ImportError:
26+
print 'Editing Stage'
27+
else:
28+
print 'Editing Stage'
29+
30+
baseURL = secrets.baseURL
31+
email = secrets.email
32+
password = secrets.password
33+
filePath = secrets.filePath
34+
verify = secrets.verify
35+
36+
handleIdDict = {}
37+
with open(fileName) as csvfile:
38+
reader = csv.DictReader(csvfile)
39+
for row in reader:
40+
fileIdentifier = row['fileId']
41+
handle = row['handle']
42+
handleIdDict[fileIdentifier] = handle
43+
print handleIdDict
44+
id = raw_input('test')
45+
46+
startTime = time.time()
47+
data = {'email':email,'password':password}
48+
header = {'content-type':'application/json','accept':'application/json'}
49+
session = requests.post(baseURL+'/rest/login', headers=header, verify=verify, params=data).cookies['JSESSIONID']
50+
cookies = {'JSESSIONID': session}
51+
headerFileUpload = {'accept':'application/json'}
52+
cookiesFileUpload = cookies
53+
status = requests.get(baseURL+'/rest/status', headers=header, cookies=cookies, verify=verify).json()
54+
print 'authenticated'
55+
56+
collectionMetadata = json.load(open('metadataOverwrite.json'))
57+
58+
f=csv.writer(open(filePath+'metadataOverwrite'+datetime.now().strftime('%Y-%m-%d %H.%M.%S')+'.csv', 'wb'))
59+
f.writerow(['itemID']+['delete']+['post'])
60+
61+
for k,v in handleIdDict.items():
62+
for itemMetadata in collectionMetadata:
63+
updatedItemMetadata = {}
64+
updatedItemMetadataList = []
65+
for element in itemMetadata['metadata']:
66+
if element['key'] == 'fileIdentifier':
67+
fileIdentifier = element['value']
68+
else:
69+
updatedItemMetadataList.append(element)
70+
uriElement = {}
71+
uriElement['key'] = 'dc.identifier.uri'
72+
uriElement['value'] = 'http://jhir.library.jhu.edu/handle/' + v
73+
updatedItemMetadataList.append(uriElement)
74+
provNote = 'Item metadata updated through a batch process on '+datetime.now().strftime('%Y-%m-%d %H:%M:%S')+'.'
75+
provNoteElement = {}
76+
provNoteElement['key'] = 'dc.description.provenance'
77+
provNoteElement['value'] = unicode(provNote)
78+
provNoteElement['language'] = 'en_US'
79+
updatedItemMetadataList.append(provNoteElement)
80+
81+
if fileIdentifier == k:
82+
print fileIdentifier
83+
endpoint = baseURL+'/rest/handle/'+v
84+
item = requests.get(endpoint, headers=header, cookies=cookies, verify=verify).json()
85+
itemID = item['uuid']
86+
metadata = requests.get(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify).json()
87+
for l in range (0, len (metadata)):
88+
metadata[l].pop('schema', None)
89+
metadata[l].pop('element', None)
90+
metadata[l].pop('qualifier', None)
91+
if metadata[l]['key'] == 'dc.description.provenance':
92+
updatedItemMetadataList.append(metadata[l])
93+
if metadata[l]['key'] == 'dc.date.available':
94+
updatedItemMetadataList.append(metadata[l])
95+
if metadata[l]['key'] == 'dc.date.accessioned':
96+
updatedItemMetadataList.append(metadata[l])
97+
updatedItemMetadata = json.dumps(updatedItemMetadataList)
98+
delete = requests.delete(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify)
99+
print delete
100+
post = requests.put(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify, data=updatedItemMetadata)
101+
print post
102+
f.writerow([itemID]+[delete]+[post])
103+
104+
logout = requests.post(baseURL+'/rest/logout', headers=header, cookies=cookies, verify=verify)
105+
106+
elapsedTime = time.time() - startTime
107+
m, s = divmod(elapsedTime, 60)
108+
h, m = divmod(m, 60)
109+
print 'Total script run time: ', '%d:%02d:%02d' % (h, m, s)

0 commit comments

Comments
 (0)