|
5 | 5 | import csv |
6 | 6 | from datetime import datetime |
7 | 7 | 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: ') |
8 | 33 |
|
9 | 34 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) |
10 | 35 |
|
|
24 | 49 | filePath = secrets.filePath |
25 | 50 | verify = secrets.verify |
26 | 51 |
|
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 | | - |
32 | 52 | startTime = time.time() |
33 | 53 | data = {'email':email,'password':password} |
34 | 54 | header = {'content-type':'application/json','accept':'application/json'} |
|
72 | 92 | itemsRemaining = len(itemList) - number |
73 | 93 | print 'Items remaining: ', itemsRemaining, 'ItemID: ', itemID |
74 | 94 | 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]) |
95 | 124 |
|
96 | 125 | logout = requests.post(baseURL+'/rest/logout', headers=header, cookies=cookies, verify=verify) |
97 | 126 |
|
|
0 commit comments