Skip to content

Commit 5f012a2

Browse files
committed
updates
1 parent 2706ee4 commit 5f012a2

File tree

4 files changed

+110
-44
lines changed

4 files changed

+110
-44
lines changed

addKeyValuePairToCollection.py

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,31 @@
55
import csv
66
from datetime import datetime
77
import urllib3
8+
import argparse
9+
10+
parser = argparse.ArgumentParser()
11+
parser.add_argument('-k', '--key', help='the key to be added. optional - if not provided, the script will ask for input')
12+
parser.add_argument('-v', '--value', help='the value to be added. optional - if not provided, the script will ask for input')
13+
parser.add_argument('-l', '--language', help='the language tag to be added. optional - if not provided, the script will ask for input')
14+
parser.add_argument('-i', '--handle', help='handle of the collection. optional - if not provided, the script will ask for input')
15+
args = parser.parse_args()
16+
17+
if args.key:
18+
addedKey = args.key
19+
else:
20+
addedKey = raw_input('Enter the key: ')
21+
if args.value:
22+
addedValue = args.value
23+
else:
24+
addedValue = raw_input('Enter the value: ')
25+
if args.language:
26+
addedLanguage = args.language
27+
else:
28+
addedLanguage = raw_input('Enter the language tag: ')
29+
if args.handle:
30+
handle = args.handle
31+
else:
32+
handle = raw_input('Enter collection handle: ')
833

934
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
1035

@@ -24,12 +49,6 @@
2449
filePath = secrets.filePath
2550
verify = secrets.verify
2651

27-
collectionHandle = raw_input('Enter collection handle: ')
28-
addedKey = raw_input('Enter key: ')
29-
addedValue = raw_input('Enter value: ')
30-
addedLanguage = raw_input('Enter language: ')
31-
confirm = raw_input('Hit enter to proceed')
32-
3352
startTime = time.time()
3453
data = {'email':email,'password':password}
3554
header = {'content-type':'application/json','accept':'application/json'}
@@ -68,7 +87,12 @@
6887
itemsRemaining = len(itemList) - number
6988
print 'Items remaining: ', itemsRemaining, 'ItemID: ', itemID
7089
metadata = requests.get(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify).json()
71-
itemMetadataProcessed = metadata
90+
itemMetadataProcessed = []
91+
for l in range (0, len (metadata)):
92+
metadata[l].pop('schema', None)
93+
metadata[l].pop('element', None)
94+
metadata[l].pop('qualifier', None)
95+
itemMetadataProcessed.append(metadata[l])
7296
addedMetadataElement = {}
7397
addedMetadataElement['key'] = addedKey
7498
addedMetadataElement['value'] = unicode(addedValue)

addKeyValuePairToCommunity.py

Lines changed: 54 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,31 @@
55
import csv
66
from datetime import datetime
77
import urllib3
8+
import argparse
9+
10+
parser = argparse.ArgumentParser()
11+
parser.add_argument('-k', '--key', help='the key to be added. optional - if not provided, the script will ask for input')
12+
parser.add_argument('-v', '--value', help='the value to be added. optional - if not provided, the script will ask for input')
13+
parser.add_argument('-l', '--language', help='the language tag to be added. optional - if not provided, the script will ask for input')
14+
parser.add_argument('-i', '--handle', help='handle of the community. optional - if not provided, the script will ask for input')
15+
args = parser.parse_args()
16+
17+
if args.key:
18+
addedKey = args.key
19+
else:
20+
addedKey = raw_input('Enter the key: ')
21+
if args.value:
22+
addedValue = args.value
23+
else:
24+
addedValue = raw_input('Enter the value: ')
25+
if args.language:
26+
addedLanguage = args.language
27+
else:
28+
addedLanguage = raw_input('Enter the language tag: ')
29+
if args.handle:
30+
handle = args.handle
31+
else:
32+
handle = raw_input('Enter community handle: ')
833

934
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
1035

@@ -24,11 +49,6 @@
2449
filePath = secrets.filePath
2550
verify = secrets.verify
2651

27-
handle = raw_input('Enter community handle: ')
28-
addedKey = raw_input('Enter key: ')
29-
addedValue = raw_input('Enter value: ')
30-
addedLanguage = raw_input('Enter language: ')
31-
3252
startTime = time.time()
3353
data = {'email':email,'password':password}
3454
header = {'content-type':'application/json','accept':'application/json'}
@@ -72,26 +92,35 @@
7292
itemsRemaining = len(itemList) - number
7393
print 'Items remaining: ', itemsRemaining, 'ItemID: ', itemID
7494
metadata = requests.get(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify).json()
75-
itemMetadataProcessed = metadata
76-
addedMetadataElement = {}
77-
addedMetadataElement['key'] = addedKey
78-
addedMetadataElement['value'] = unicode(addedValue)
79-
addedMetadataElement['language'] = unicode(addedLanguage)
80-
itemMetadataProcessed.append(addedMetadataElement)
81-
provNote = '\''+addedKey+': '+addedValue+'\' was added through a batch process on '+datetime.now().strftime('%Y-%m-%d %H:%M:%S')+'.'
82-
provNoteElement = {}
83-
provNoteElement['key'] = 'dc.description.provenance'
84-
provNoteElement['value'] = unicode(provNote)
85-
provNoteElement['language'] = 'en_US'
86-
itemMetadataProcessed.append(provNoteElement)
87-
recordsEdited = recordsEdited + 1
88-
itemMetadataProcessed = json.dumps(itemMetadataProcessed)
89-
print 'updated', itemID, recordsEdited
90-
delete = requests.delete(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify)
91-
print delete
92-
post = requests.put(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify, data=itemMetadataProcessed)
93-
print post
94-
f.writerow([itemID]+[addedKey]+[addedValue]+[delete]+[post])
95+
itemMetadataProcessed = []
96+
changeRecord = True
97+
for metadataElement in metadata:
98+
if metadataElement['key'] == addedKey and metadataElement['value'] == addedValue:
99+
changeRecord = False
100+
metadataElement.pop('schema', None)
101+
metadataElement.pop('element', None)
102+
metadataElement.pop('qualifier', None)
103+
itemMetadataProcessed.append(metadataElement)
104+
if changeRecord == True:
105+
addedMetadataElement = {}
106+
addedMetadataElement['key'] = addedKey
107+
addedMetadataElement['value'] = unicode(addedValue)
108+
addedMetadataElement['language'] = unicode(addedLanguage)
109+
itemMetadataProcessed.append(addedMetadataElement)
110+
provNote = '\''+addedKey+': '+addedValue+'\' was added through a batch process on '+datetime.now().strftime('%Y-%m-%d %H:%M:%S')+'.'
111+
provNoteElement = {}
112+
provNoteElement['key'] = 'dc.description.provenance'
113+
provNoteElement['value'] = unicode(provNote)
114+
provNoteElement['language'] = 'en_US'
115+
itemMetadataProcessed.append(provNoteElement)
116+
recordsEdited = recordsEdited + 1
117+
itemMetadataProcessed = json.dumps(itemMetadataProcessed)
118+
print 'updated', itemID, recordsEdited
119+
delete = requests.delete(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify)
120+
print delete
121+
post = requests.put(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify, data=itemMetadataProcessed)
122+
print post
123+
f.writerow([itemID]+[addedKey]+[addedValue]+[delete]+[post])
95124

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

removeDuplicateKeyValuePairsFromItems.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
headerFileUpload = {'accept':'application/json'}
3333
cookiesFileUpload = cookies
3434
status = requests.get(baseURL+'/rest/status', headers=header, cookies=cookies, verify=verify).json()
35+
userFullName = status['fullname']
3536
print 'authenticated'
3637

3738
itemList = []
@@ -60,33 +61,45 @@
6061
h, m = divmod(m, 60)
6162
print 'Item list creation time: ','%d:%02d:%02d' % (h, m, s)
6263

63-
f=csv.writer(open(filePath+'removeDuplicatesRecordsEdited'+datetime.now().strftime('%Y-%m-%d %H.%M.%S')+'.csv', 'wb'))
64-
f.writerow(['itemID'])
64+
f=csv.writer(open(filePath+'DuplicateKeysRemoved'+datetime.now().strftime('%Y-%m-%d %H.%M.%S')+'.csv', 'wb'))
65+
f.writerow(['itemID']+['key:value'])
6566
for number, itemID in enumerate(itemList):
6667
itemMetadataProcessed = []
68+
keyValueList = []
6769
itemsRemaining = len(itemList) - number
6870
print 'Items remaining: ', itemsRemaining, 'ItemID: ', itemID
6971
metadata = requests.get(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify).json()
70-
for l in range (0, len (metadata)):
71-
if metadata[l] not in itemMetadataProcessed:
72-
itemMetadataProcessed.append(metadata[l])
73-
else:
74-
if metadata[l]['key'] == 'dc.description.provenance':
75-
itemMetadataProcessed.append(metadata[l])
72+
changeRecord = False
73+
for metadataElement in metadata:
74+
metadataElement.pop('schema', None)
75+
metadataElement.pop('element', None)
76+
metadataElement.pop('qualifier', None)
77+
key = metadataElement['key']
78+
try:
79+
value = metadataElement['value']
80+
except:
81+
value = ''
82+
if key != 'dc.description.provenance':
83+
keyValue = str(key)+':'+unicode(value)
84+
if keyValue not in keyValueList:
85+
itemMetadataProcessed.append(metadataElement)
86+
keyValueList.append(keyValue)
7687
else:
77-
provNote = 'A duplicate element, \''+metadata[l]['key']+': '+metadata[l]['value']+',\' was removed through a batch process on '+datetime.now().strftime('%Y-%m-%d %H:%M:%S')+'.'
88+
f.writerow([itemID]+[keyValue])
89+
provNote = 'A duplicate element, \''+key+': '+value+',\' was removed through a batch process on '+datetime.now().strftime('%Y-%m-%d %H:%M:%S')+'.'
7890
provNoteElement = {}
7991
provNoteElement['key'] = 'dc.description.provenance'
8092
provNoteElement['value'] = unicode(provNote)
8193
provNoteElement['language'] = 'en_US'
8294
itemMetadataProcessed.append(provNoteElement)
83-
if itemMetadataProcessed != metadata:
95+
changeRecord = True
96+
if changeRecord == True:
8497
itemMetadataProcessed = json.dumps(itemMetadataProcessed)
98+
print itemID
8599
delete = requests.delete(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify)
86100
print delete
87101
post = requests.put(baseURL+'/rest/items/'+str(itemID)+'/metadata', headers=header, cookies=cookies, verify=verify, data=itemMetadataProcessed)
88102
print post
89-
f.writerow([itemID])
90103

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

replaceKeyForCommunity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@
105105
print delete
106106
post = requests.put(baseURL+itemLink+'/metadata', headers=header, cookies=cookies, verify=verify, data=itemMetadataProcessed)
107107
print post
108-
f.writerow([itemID]+[replacedElement['key']]+[replacedElement['value'].encode('utf-8')]+[delete]+[post])
108+
f.writerow([itemLink]+[replacedElement['key']]+[replacedElement['value'].encode('utf-8')]+[delete]+[post])
109109
offset = offset + 200
110110
print offset
111111

0 commit comments

Comments
 (0)