Skip to content

Commit f81f2b7

Browse files
committed
updates
1 parent b675e85 commit f81f2b7

11 files changed

+247
-375
lines changed

addKeyValuePairOnHandleCSV.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@
3434
status = requests.get(baseURL+'/rest/status', headers=header, cookies=cookies, verify=verify).json()
3535
print 'authenticated'
3636

37-
filename = filePath+raw_input('Enter filename (including \'.csv\'): ')
37+
fileName = filePath+raw_input('Enter fileName (including \'.csv\'): ')
3838
addedKey = raw_input('Enter key: ')
3939
startTime = time.time()
4040

4141
f=csv.writer(open(filePath+'addKeyValuePair'+datetime.now().strftime('%Y-%m-%d %H.%M.%S')+'.csv', 'wb'))
4242
f.writerow(['itemID']+['addedKey']+['addedValue']+['delete']+['post'])
4343

44-
with open(filename) as csvfile:
44+
with open(fileName) as csvfile:
4545
reader = csv.DictReader(csvfile)
4646
for row in reader:
4747
addedValue = row['value'].decode('utf-8')

addKeyValuePairToCommunity.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
addedKey = raw_input('Enter key: ')
2929
addedValue = raw_input('Enter value: ')
3030
addedLanguage = raw_input('Enter language: ')
31-
confirm = raw_input('Hit enter to proceed')
3231

3332
startTime = time.time()
3433
data = {'email':email,'password':password}
@@ -48,7 +47,7 @@
4847
collections = requests.get(baseURL+'/rest/communities/'+str(communityID)+'/collections', headers=header, cookies=cookies, verify=verify).json()
4948
for j in range (0, len (collections)):
5049
collectionID = collections[j]['uuid']
51-
if collectionID != '4dccec82-4cfb-4583-a728-2cb823b15ef0':
50+
if collectionID != '45794375-6640-4efe-848e-082e60bae375':
5251
offset = 0
5352
items = ''
5453
while items != []:

createItemMetadataFromCSV.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ def createMetadataElementDirect (key, value, language):
4343
metadataElement = {'key': key, 'value': value}
4444
metadata.append(metadataElement)
4545

46-
filename = raw_input('Enter filename (including \'.csv\'): ')
46+
fileName = raw_input('Enter fileName (including \'.csv\'): ')
4747

48-
with open(filename) as csvfile:
48+
with open(fileName) as csvfile:
4949
reader = csv.DictReader(csvfile)
5050
counter = 0
5151
metadataGroup = []

dupeDateCreatedToDateIssued.py

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

removeDuplicateKeyValuePairsFromItems.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
collections = requests.get(baseURL+'/rest/communities/'+str(communityID)+'/collections', headers=header, cookies=cookies, verify=verify).json()
4343
for j in range (0, len (collections)):
4444
collectionID = collections[j]['uuid']
45-
if collectionID != '4dccec82-4cfb-4583-a728-2cb823b15ef0':
45+
if collectionID != '45794375-6640-4efe-848e-082e60bae375':
4646
offset = 0
4747
items = ''
4848
while items != []:

replaceKey.py

Lines changed: 53 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@
55
import csv
66
from datetime import datetime
77
import urllib3
8+
import argparse
9+
10+
parser = argparse.ArgumentParser()
11+
parser.add_argument('-1', '--replacedKey', help='the key to be replaced. optional - if not provided, the script will ask for input')
12+
parser.add_argument('-2', '--replacementKey', help='the replacement key. optional - if not provided, the script will ask for input')
13+
args = parser.parse_args()
14+
15+
if args.replacedKey:
16+
replacedKey = args.replacedKey
17+
else:
18+
replacedKey = raw_input('Enter the key to be replaced: ')
19+
if args.replacementKey:
20+
replacementKey = args.replacementKey
21+
else:
22+
replacementKey = raw_input('Enter the replacement key: ')
823

924
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
1025

@@ -24,9 +39,6 @@
2439
filePath = secrets.filePath
2540
verify = secrets.verify
2641

27-
oldKey = raw_input('Enter old key: ')
28-
newKey = raw_input('Enter new key: ')
29-
3042
startTime = time.time()
3143
data = {'email':email,'password':password}
3244
header = {'content-type':'application/json','accept':'application/json'}
@@ -37,72 +49,50 @@
3749
status = requests.get(baseURL+'/rest/status', headers=header, cookies=cookies, verify=verify).json()
3850
print 'authenticated'
3951

40-
itemList = []
41-
endpoint = baseURL+'/rest/communities'
42-
communities = requests.get(endpoint, headers=header, cookies=cookies, verify=verify).json()
43-
for i in range (0, len (communities)):
44-
communityID = communities[i]['uuid']
45-
collections = requests.get(baseURL+'/rest/communities/'+str(communityID)+'/collections', headers=header, cookies=cookies, verify=verify).json()
46-
for j in range (0, len (collections)):
47-
collectionID = collections[j]['uuid']
48-
if collectionID != '4dccec82-4cfb-4583-a728-2cb823b15ef0':
49-
offset = 0
50-
items = ''
51-
while items != []:
52-
items = requests.get(baseURL+'/rest/collections/'+str(collectionID)+'/items?limit=200&offset='+str(offset), headers=header, cookies=cookies, verify=verify)
53-
while items.status_code != 200:
54-
time.sleep(5)
55-
items = requests.get(baseURL+'/rest/collections/'+str(collectionID)+'/items?limit=200&offset='+str(offset), headers=header, cookies=cookies, verify=verify)
56-
items = items.json()
57-
for k in range (0, len (items)):
58-
itemID = items[k]['uuid']
59-
itemList.append(itemID)
60-
offset = offset + 200
61-
elapsedTime = time.time() - startTime
62-
m, s = divmod(elapsedTime, 60)
63-
h, m = divmod(m, 60)
64-
print 'Item list creation time: ','%d:%02d:%02d' % (h, m, s)
65-
66-
recordsEdited = 0
67-
elementsEdited = 0
6852
f=csv.writer(open(filePath+'replaceKey'+datetime.now().strftime('%Y-%m-%d %H.%M.%S')+'.csv', 'wb'))
6953
f.writerow(['itemID']+['replacedKey']+['replacedValue']+['delete']+['post'])
70-
for number, itemID in enumerate(itemList):
71-
replacedElement = ''
72-
itemMetadataProcessed = []
73-
itemsRemaining = len(itemList) - number
74-
print 'Items remaining: ', itemsRemaining, 'ItemID: ', itemID
75-
metadata = requests.get(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify).json()
76-
for l in range (0, len (metadata)):
77-
if metadata[l]['key'] == oldKey:
78-
replacedElement = metadata[l]
79-
updatedMetadataElement = {}
80-
updatedMetadataElement['key'] = newKey
81-
updatedMetadataElement['value'] = unicode(replacedElement['value'])
82-
updatedMetadataElement['language'] = unicode(replacedElement['language'])
83-
print updatedMetadataElement
84-
itemMetadataProcessed.append(updatedMetadataElement)
85-
provNote = '\''+oldKey+'\' was replaced by \''+newKey+'\' through a batch process on '+datetime.now().strftime('%Y-%m-%d %H:%M:%S')+'.'
86-
provNoteElement = {}
87-
provNoteElement['key'] = 'dc.description.provenance'
88-
provNoteElement['value'] = unicode(provNote)
89-
provNoteElement['language'] = 'en_US'
90-
itemMetadataProcessed.append(provNoteElement)
91-
elementsEdited = elementsEdited + 1
92-
else:
93-
if metadata[l] not in itemMetadataProcessed:
94-
itemMetadataProcessed.append(metadata[l])
95-
if replacedElement != '':
96-
recordsEdited = recordsEdited + 1
54+
offset = 0
55+
recordsEdited = 0
56+
items = ''
57+
while items != []:
58+
endpoint = baseURL+'/rest/filtered-items?query_field[]='+replacedKey+'&query_op[]=exists&query_val[]=&limit=200&offset='+str(offset)
59+
print endpoint
60+
response = requests.get(endpoint, headers=header, cookies=cookies, verify=verify).json()
61+
items = response['items']
62+
for item in items:
63+
itemMetadataProcessed = []
64+
itemLink = item['link']
65+
metadata = requests.get(baseURL + itemLink + '/metadata', headers=header, cookies=cookies, verify=verify).json()
66+
for l in range (0, len (metadata)):
67+
metadata[l].pop('schema', None)
68+
metadata[l].pop('element', None)
69+
metadata[l].pop('qualifier', None)
70+
if metadata[l]['key'] == replacedKey:
71+
replacedElement = metadata[l]
72+
updatedMetadataElement = {}
73+
updatedMetadataElement['key'] = replacementKey
74+
updatedMetadataElement['value'] = unicode(replacedElement['value'])
75+
updatedMetadataElement['language'] = unicode(replacedElement['language'])
76+
print updatedMetadataElement
77+
itemMetadataProcessed.append(updatedMetadataElement)
78+
provNote = '\''+replacedKey+'\' was replaced by \''+replacementKey+'\' through a batch process on '+datetime.now().strftime('%Y-%m-%d %H:%M:%S')+'.'
79+
provNoteElement = {}
80+
provNoteElement['key'] = 'dc.description.provenance'
81+
provNoteElement['value'] = unicode(provNote)
82+
provNoteElement['language'] = 'en_US'
83+
itemMetadataProcessed.append(provNoteElement)
84+
else:
85+
if metadata[l] not in itemMetadataProcessed:
86+
itemMetadataProcessed.append(metadata[l])
9787
itemMetadataProcessed = json.dumps(itemMetadataProcessed)
98-
print 'updated', itemID, recordsEdited, elementsEdited
99-
delete = requests.delete(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify)
88+
print itemMetadataProcessed
89+
delete = requests.delete(baseURL+itemLink+'/metadata', headers=header, cookies=cookies, verify=verify)
10090
print delete
101-
post = requests.put(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify, data=itemMetadataProcessed)
91+
post = requests.put(baseURL+itemLink+'/metadata', headers=header, cookies=cookies, verify=verify, data=itemMetadataProcessed)
10292
print post
10393
f.writerow([itemID]+[replacedElement['key']]+[replacedElement['value'].encode('utf-8')]+[delete]+[post])
104-
else:
105-
print 'not updated', itemID
94+
offset = offset + 200
95+
print offset
10696

10797
logout = requests.post(baseURL+'/rest/logout', headers=header, cookies=cookies, verify=verify)
10898

0 commit comments

Comments
 (0)