def objectfromfilename(filename, config): filenamex, objectnumber, imagenumber = getNumber(filename) objectCSID = getCSID('objectnumber', objectnumber, config) if objectCSID is None: #print "could not get (i.e. find) objectnumber's csid: %s." % objectnumber objectCSID = '' else: objectCSID = objectCSID[0] return [filename, objectnumber, objectCSID]
def uploadmedia(mediaElements, config, http_parms): if 'blobCSID' in mediaElements: uri = 'media' messages = [] messages.append("posting to media REST API...") payload = mediaPayload(mediaElements, http_parms.institution) elapsedtime = time.time() (url, data, mediaCSID) = make_request('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) elapsedtime = time.time() - elapsedtime messages.append('got mediacsid %s elapsedtime %s ' % (mediaCSID, elapsedtime)) mediaElements['mediaCSID'] = mediaCSID messages.append("media REST API post succeeded...") # # for PAHMA, each uploaded image becomes the primary # if http_parms.institution == 'pahma': # primary_payload = """<?xml version="1.0" encoding="utf-8" standalone="yes"?> # <ns2:invocationContext xmlns:ns2="http://collectionspace.org/services/common/invocable" # <mode>single</mode> # <docType>""" + mediaCSID + """</docType> # <singleCSID></singleCSID> # </ns2:invocationContext> # """ # # try: # make_request('POST', 'batch/563d0999-d29e-4888-b58d', http_parms.realm, http_parms.server, http_parms.username, http_parms.password, primary_payload) # except: # print "batch job to set primary image failed." # # else: # pass # are we supposed to try to link this media record to a collectionobject? if mediaElements['handling'] in 'slide borndigital mediaonly'.split( ' '): mediaElements['objectCSID'] = 'N/A: %s' % mediaElements['handling'] else: # try to relate media record to collection object if needed objectCSID, msg = getCSID('objectnumber', mediaElements['objectnumber'], http_parms) if objectCSID == [] or objectCSID is None: print "could not get (i.e. find) objectnumber's csid: %s." % mediaElements[ 'objectnumber'] mediaElements['objectCSID'] = 'not found' # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) else: mediaElements['objectCSID'] = objectCSID uri = 'relations' messages.append("posting media2obj to relations REST API...") mediaElements['objectCsid'] = objectCSID mediaElements['subjectCsid'] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID mediaElements['objectDocumentType'] = 'CollectionObject' mediaElements['subjectDocumentType'] = 'Media' payload = relationsPayload(mediaElements) (url, data, csid) = make_request('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) # elapsedtimetotal += elapsedtime messages.append('got relation csid %s' % csid) mediaElements['media2objCSID'] = csid messages.append("relations REST API post succeeded...") # reverse the roles messages.append("posting obj2media to relations REST API...") temp = mediaElements['objectCsid'] mediaElements['objectCsid'] = mediaElements['subjectCsid'] mediaElements['subjectCsid'] = temp mediaElements['objectDocumentType'] = 'Media' mediaElements['subjectDocumentType'] = 'CollectionObject' payload = relationsPayload(mediaElements) (url, data, csid) = make_request('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) #elapsedtimetotal += elapsedtime messages.append('got relation csid %s' % csid) mediaElements['obj2mediaCSID'] = csid messages.append("relations REST API post succeeded...") return mediaElements
def uploadmedia(mediaElements, config, http_parms): if 'blobCSID' in mediaElements: uri = 'media' xobjectCSID = '' messages = [] #messages.append("posting to media REST API...") payload = makePayload(media_payload, mediaElements, http_parms.institution) (url, data, mediaCSID, elapsedtime) = postxml('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) messages.append('mediacsid %s elapsedtime %8.2f s.' % (mediaCSID, elapsedtime)) mediaElements['mediaCSID'] = mediaCSID # create a 'skeletal' accession (object) record if requested if mediaElements['handling'] == 'media+create+accession': payload = makePayload(object_payload, mediaElements, http_parms.institution) try: (url, data, xobjectCSID, elapsedtime) = postxml('POST', 'collectionobjects', http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) except: messages.append( "Failed to create skeletal object record for %s." % mediaElements['objectnumber']) else: pass # are we supposed to try to link this media record to a collectionobject? if mediaElements['handling'] in 'slide borndigital mediaonly'.split( ' '): mediaElements['objectCSID'] = 'N/A: %s' % mediaElements['handling'] else: # try to relate media record to collection object if needed if mediaElements['handling'] == 'media+create+accession': objectCSID = xobjectCSID else: objectCSID = getCSID('objectnumber', mediaElements['objectnumber'], config) if objectCSID == [] or objectCSID is None: messages.append( "could not get (i.e. find) objectnumber's csid: %s." % mediaElements['objectnumber']) mediaElements['objectCSID'] = 'not found' # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) else: mediaElements['objectCSID'] = objectCSID uri = 'relations' #messages.append("posting media2obj to relations REST API...") mediaElements['objectCsid'] = objectCSID mediaElements['subjectCsid'] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID mediaElements['objectDocumentType'] = 'CollectionObject' mediaElements['subjectDocumentType'] = 'Media' payload = relationsPayload(mediaElements) (url, data, csid, elapsedtime1) = postxml( 'POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) # elapsedtimetotal += elapsedtime #messages.append('relation media2obj csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['media2objCSID'] = csid #messages.append("relations REST API post succeeded...") # reverse the roles #messages.append("posting obj2media to relations REST API...") temp = mediaElements['objectCsid'] mediaElements['objectCsid'] = mediaElements['subjectCsid'] mediaElements['subjectCsid'] = temp mediaElements['objectDocumentType'] = 'Media' mediaElements['subjectDocumentType'] = 'CollectionObject' payload = relationsPayload(mediaElements) (url, data, csid, elapsedtime2) = postxml( 'POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) #messages.append('relation obj2media csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['obj2mediaCSID'] = csid messages.append( "REST API post for two relations succeeded, elapsedtime %8.2f s." % (elapsedtime1 + elapsedtime2)) for m in messages: print(" %s" % m) return mediaElements
def uploadmedia(mediaElements, config, http_parms): if "blobCSID" in mediaElements: uri = "media" messages = [] messages.append("posting to media REST API...") # print updateItems payload = mediaPayload(mediaElements, http_parms.institution) messages.append(payload) (url, data, mediaCSID, elapsedtime) = postxml( "POST", uri, http_parms.realm, http_parms.hostname, http_parms.username, http_parms.password, payload ) # elapsedtimetotal += elapsedtime messages.append("got mediacsid %s elapsedtime %s " % (mediaCSID, elapsedtime)) mediaElements["mediaCSID"] = mediaCSID messages.append("media REST API post succeeded...") # for PAHMA, each uploaded image becomes the primary if http_parms.institution == "pahma": primary_payload = ( """<?xml version="1.0" encoding="utf-8" standalone="yes"?> <ns2:invocationContext xmlns:ns2="http://collectionspace.org/services/common/invocable" <mode>single</mode> <docType>""" + mediaCSID + """</docType> <singleCSID></singleCSID> </ns2:invocationContext> """ ) try: postxml( "POST", "batch/57c6de27-4f1e-48d3-a661", http_parms.realm, http_parms.hostname, http_parms.username, http_parms.password, primary_payload, ) except: print "batch job to set primary image failed." else: pass # are we supposed to try to link this media record to a collectionobject? if mediaElements["handling"] in "slide borndigital mediaonly".split(" "): mediaElements["objectCSID"] = "N/A: %s" % mediaElements["handling"] else: # try to relate media record to collection object if needed objectCSID = getCSID("objectnumber", mediaElements["objectnumber"], config) if objectCSID == [] or objectCSID is None: print "could not get (i.e. find) objectnumber's csid: %s." % mediaElements["objectnumber"] mediaElements["objectCSID"] = "" # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) raise else: objectCSID = objectCSID[0] mediaElements["objectCSID"] = objectCSID uri = "relations" messages.append("posting media2obj to relations REST API...") mediaElements["objectCsid"] = objectCSID mediaElements["subjectCsid"] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID mediaElements["objectDocumentType"] = "CollectionObject" mediaElements["subjectDocumentType"] = "Media" payload = relationsPayload(mediaElements) (url, data, csid, elapsedtime) = postxml( "POST", uri, http_parms.realm, http_parms.hostname, http_parms.username, http_parms.password, payload ) # elapsedtimetotal += elapsedtime messages.append("got relation csid %s elapsedtime %s " % (csid, elapsedtime)) mediaElements["media2objCSID"] = csid messages.append("relations REST API post succeeded...") # reverse the roles messages.append("posting obj2media to relations REST API...") temp = mediaElements["objectCsid"] mediaElements["objectCsid"] = mediaElements["subjectCsid"] mediaElements["subjectCsid"] = temp mediaElements["objectDocumentType"] = "Media" mediaElements["subjectDocumentType"] = "CollectionObject" payload = relationsPayload(mediaElements) (url, data, csid, elapsedtime) = postxml( "POST", uri, http_parms.realm, http_parms.hostname, http_parms.username, http_parms.password, payload ) # elapsedtimetotal += elapsedtime messages.append("got relation csid %s elapsedtime %s " % (csid, elapsedtime)) mediaElements["obj2mediaCSID"] = csid messages.append("relations REST API post succeeded...") return mediaElements
def uploadmedia(mediaElements, config): try: realm = config.get('connect', 'realm') hostname = config.get('connect', 'hostname') username = config.get('connect', 'username') password = config.get('connect', 'password') institution = config.get('info', 'institution') alwayscreatemedia = config.get('info', 'alwayscreatemedia') alwayscreatemedia = True if alwayscreatemedia.lower() == 'true' else False except: print "could not get at least one of realm, hostname, username, password or institution from config file." # print "can't continue, exiting..." raise # for ucjeps if mediaElements['handling'] == 'slide': for extra in 'imagetype copyright source'.split(' '): try: mediaElements[extra] = config.get('info', extra) except: mediaElements[extra] = '' objectCSID = getCSID('objectnumber', mediaElements['objectnumber'], config) if objectCSID == [] or objectCSID is None: print "could not get (i.e. find) objectnumber's csid: %s." % mediaElements['objectnumber'] mediaElements['objectCSID'] = '' # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) # raise else: objectCSID = objectCSID[0] mediaElements['objectCSID'] = objectCSID if alwayscreatemedia or objectCSID is not None: updateItems = {'objectStatus': 'found', 'subjectCsid': '', 'objectCsid': mediaElements['objectCSID'], 'objectNumber': mediaElements['objectnumber'], 'imageNumber': mediaElements['imagenumber'], 'blobCsid': mediaElements['blobCSID'], 'name': mediaElements['name'], 'rightsHolderRefname': mediaElements['rightsholder'], 'contributor': mediaElements['contributor'], 'creator': mediaElements['creator'], 'mediaDate': mediaElements['mediaDate'], 'imageType': mediaElements['imagetype'], 'copyrightStatement': mediaElements['copyrightstatement'], 'source': mediaElements['source'], } uri = 'media' messages = [] messages.append("posting to media REST API...") # print updateItems payload = mediaPayload(updateItems, institution) messages.append(payload) (url, data, mediaCSID, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) # elapsedtimetotal += elapsedtime messages.append('got mediacsid %s elapsedtime %s ' % (mediaCSID, elapsedtime)) mediaElements['mediaCSID'] = mediaCSID messages.append("media REST API post succeeded...") # for PAHMA, each uploaded image becomes the primary if institution == 'pahma': primary_payload = """<?xml version="1.0" encoding="utf-8" standalone="yes"?> <ns2:invocationContext xmlns:ns2="http://collectionspace.org/services/common/invocable" <mode>single</mode> <docType>""" + mediaCSID + """</docType> <singleCSID></singleCSID> </ns2:invocationContext> """ postxml('POST', 'batch/57c6de27-4f1e-48d3-a661', realm, hostname, username, password, primary_payload) else: pass # what about mediaElements['handling']? if objectCSID is not None: # now relate media record to collection object uri = 'relations' messages.append("posting media2obj to relations REST API...") updateItems['objectCsid'] = objectCSID updateItems['subjectCsid'] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID updateItems['objectDocumentType'] = 'CollectionObject' updateItems['subjectDocumentType'] = 'Media' payload = relationsPayload(updateItems) (url, data, csid, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) #elapsedtimetotal += elapsedtime messages.append('got relation csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['media2objCSID'] = csid messages.append("relations REST API post succeeded...") # reverse the roles messages.append("posting obj2media to relations REST API...") temp = updateItems['objectCsid'] updateItems['objectCsid'] = updateItems['subjectCsid'] updateItems['subjectCsid'] = temp updateItems['objectDocumentType'] = 'Media' updateItems['subjectDocumentType'] = 'CollectionObject' payload = relationsPayload(updateItems) (url, data, csid, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) #elapsedtimetotal += elapsedtime messages.append('got relation csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['obj2mediaCSID'] = csid messages.append("relations REST API post succeeded...") return mediaElements
def uploadmedia(mediaElements, config, http_parms): if 'blobCSID' in mediaElements: uri = 'media' messages = [] messages.append("posting to media REST API...") payload = mediaPayload(mediaElements, http_parms.institution) elapsedtime = time.time() (url, data, mediaCSID) = make_request('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) elapsedtime = time.time() - elapsedtime messages.append('got mediacsid %s elapsedtime %s ' % (mediaCSID, elapsedtime)) mediaElements['mediaCSID'] = mediaCSID messages.append("media REST API post succeeded...") # # for PAHMA, each uploaded image becomes the primary # if http_parms.institution == 'pahma': # primary_payload = """<?xml version="1.0" encoding="utf-8" standalone="yes"?> # <ns2:invocationContext xmlns:ns2="http://collectionspace.org/services/common/invocable" # <mode>single</mode> # <docType>""" + mediaCSID + """</docType> # <singleCSID></singleCSID> # </ns2:invocationContext> # """ # # try: # make_request('POST', 'batch/563d0999-d29e-4888-b58d', http_parms.realm, http_parms.server, http_parms.username, http_parms.password, primary_payload) # except: # print "batch job to set primary image failed." # # else: # pass # are we supposed to try to link this media record to a collectionobject? if mediaElements['handling'] in 'slide borndigital mediaonly'.split(' '): mediaElements['objectCSID'] = 'N/A: %s' % mediaElements['handling'] else: # try to relate media record to collection object if needed objectCSID, msg = getCSID('objectnumber', mediaElements['objectnumber'], http_parms) if objectCSID == [] or objectCSID is None: print "could not get (i.e. find) objectnumber's csid: %s." % mediaElements['objectnumber'] mediaElements['objectCSID'] = 'not found' # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) else: mediaElements['objectCSID'] = objectCSID uri = 'relations' messages.append("posting media2obj to relations REST API...") mediaElements['objectCsid'] = objectCSID mediaElements['subjectCsid'] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID mediaElements['objectDocumentType'] = 'CollectionObject' mediaElements['subjectDocumentType'] = 'Media' payload = relationsPayload(mediaElements) (url, data, csid) = make_request('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) # elapsedtimetotal += elapsedtime messages.append('got relation csid %s' % csid) mediaElements['media2objCSID'] = csid messages.append("relations REST API post succeeded...") # reverse the roles messages.append("posting obj2media to relations REST API...") temp = mediaElements['objectCsid'] mediaElements['objectCsid'] = mediaElements['subjectCsid'] mediaElements['subjectCsid'] = temp mediaElements['objectDocumentType'] = 'Media' mediaElements['subjectDocumentType'] = 'CollectionObject' payload = relationsPayload(mediaElements) (url, data, csid) = make_request('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) #elapsedtimetotal += elapsedtime messages.append('got relation csid %s' % csid) mediaElements['obj2mediaCSID'] = csid messages.append("relations REST API post succeeded...") return mediaElements
# does an 'approximate search' for a PAHMA object number # (not a normal test.py module. invoke as "python test.py", but check the checkfilenamesProd.cfg file) from cswaExtras import getConfig, getCSID form = {'webapp': 'checkfilenamesProd'} config = getConfig(form) objectnumber = '5-1758' print getCSID('approxobjectnumbers', objectnumber, config)
def uploadmedia(mediaElements, config): try: realm = config.get('connect', 'realm') hostname = config.get('connect', 'hostname') username = config.get('connect', 'username') password = config.get('connect', 'password') institution = config.get('info', 'institution') alwayscreatemedia = config.get('info', 'alwayscreatemedia') except: print "could not get at least one of realm, hostname, username, password or institution from config file." # print "can't continue, exiting..." raise objectCSID = getCSID('objectnumber', mediaElements['objectnumber'], config) if objectCSID == [] or objectCSID is None: print "could not get (i.e. find) objectnumber's csid: %s." % mediaElements[ 'objectnumber'] mediaElements['objectCSID'] = '' # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) # raise else: objectCSID = objectCSID[0] mediaElements['objectCSID'] = objectCSID if alwayscreatemedia or objectCSID is not None: updateItems = { 'objectStatus': 'found', 'subjectCsid': '', 'objectCsid': mediaElements['objectCSID'], 'objectNumber': mediaElements['objectnumber'], 'imageNumber': mediaElements['imagenumber'], 'blobCsid': mediaElements['blobCSID'], 'name': mediaElements['name'], 'rightsHolderRefname': mediaElements['rightsholder'], 'contributor': mediaElements['contributor'], 'creator': mediaElements['creator'], 'mediaDate': mediaElements['date'], } uri = 'media' messages = [] messages.append("posting to media REST API...") # print updateItems payload = mediaPayload(updateItems, institution) messages.append(payload) (url, data, mediaCSID, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) # elapsedtimetotal += elapsedtime messages.append('got mediacsid %s elapsedtime %s ' % (mediaCSID, elapsedtime)) mediaElements['mediaCSID'] = mediaCSID messages.append("media REST API post succeeded...") # for PAHMA, each uploaded image becomes the primary if institution == 'pahma': primary_payload = """<?xml version="1.0" encoding="utf-8" standalone="yes"?> <ns2:invocationContext xmlns:ns2="http://collectionspace.org/services/common/invocable" <mode>single</mode> <docType>""" + mediaCSID + """</docType> <singleCSID></singleCSID> </ns2:invocationContext> """ postxml('POST', 'batch/57c6de27-4f1e-48d3-a661', realm, hostname, username, password, primary_payload) else: pass if objectCSID != '': # now relate media record to collection object uri = 'relations' messages.append("posting media2obj to relations REST API...") updateItems['objectCsid'] = objectCSID updateItems['subjectCsid'] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID updateItems['objectDocumentType'] = 'CollectionObject' updateItems['subjectDocumentType'] = 'Media' payload = relationsPayload(updateItems) (url, data, csid, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) #elapsedtimetotal += elapsedtime messages.append('got relation csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['media2objCSID'] = csid messages.append("relations REST API post succeeded...") # reverse the roles messages.append("posting obj2media to relations REST API...") temp = updateItems['objectCsid'] updateItems['objectCsid'] = updateItems['subjectCsid'] updateItems['subjectCsid'] = temp updateItems['objectDocumentType'] = 'Media' updateItems['subjectDocumentType'] = 'CollectionObject' payload = relationsPayload(updateItems) (url, data, csid, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) #elapsedtimetotal += elapsedtime messages.append('got relation csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['obj2mediaCSID'] = csid messages.append("relations REST API post succeeded...") return mediaElements
def uploadmedia(mediaElements, config): try: realm = config.get('connect', 'realm') hostname = config.get('connect', 'hostname') username = config.get('connect', 'username') password = config.get('connect', 'password') INSTITUTION = config.get('info', 'institution') except: print "could not get at least one of realm, hostname, username, password or institution from config file." # print "can't continue, exiting..." raise objectCSID = getCSID('objectnumber', mediaElements['objectnumber'], config) if objectCSID == [] or objectCSID is None: print "could not get (i.e. find) objectnumber's csid: %s." % mediaElements['objectnumber'] # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) #raise else: objectCSID = objectCSID[0] mediaElements['objectCSID'] = objectCSID updateItems = {'objectStatus': 'found', 'subjectCsid': '', 'objectCsid': mediaElements['objectCSID'], 'objectNumber': mediaElements['objectnumber'], 'imageNumber': mediaElements['imagenumber'], 'blobCsid': mediaElements['blobCSID'], 'name': mediaElements['name'], 'rightsHolderRefname': mediaElements['rightsholder'], 'contributor': mediaElements['contributor'], 'creator': mediaElements['creator'], 'mediaDate': mediaElements['date'], } uri = 'media' messages = [] messages.append("posting to media REST API...") # print updateItems payload = mediaPayload(updateItems, INSTITUTION) messages.append(payload) messages.append(payload) (url, data, mediaCSID, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) #elapsedtimetotal += elapsedtime messages.append('got mediacsid %s elapsedtime %s ' % (mediaCSID, elapsedtime)) mediaElements['mediaCSID'] = mediaCSID messages.append("media REST API post succeeded...") # now relate media record to collection object uri = 'relations' messages.append("posting media2obj to relations REST API...") updateItems['objectCsid'] = objectCSID updateItems['subjectCsid'] = mediaCSID # "urn:cspace:INSTITUTION.cspace.berkeley.edu:media:id(%s)" % mediaCSID updateItems['objectDocumentType'] = 'CollectionObject' updateItems['subjectDocumentType'] = 'Media' payload = relationsPayload(updateItems) (url, data, csid, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) #elapsedtimetotal += elapsedtime messages.append('got relation csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['media2objCSID'] = csid messages.append("relations REST API post succeeded...") # reverse the roles messages.append("posting obj2media to relations REST API...") temp = updateItems['objectCsid'] updateItems['objectCsid'] = updateItems['subjectCsid'] updateItems['subjectCsid'] = temp updateItems['objectDocumentType'] = 'Media' updateItems['subjectDocumentType'] = 'CollectionObject' payload = relationsPayload(updateItems) (url, data, csid, elapsedtime) = postxml('POST', uri, realm, hostname, username, password, payload) #elapsedtimetotal += elapsedtime messages.append('got relation csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['obj2mediaCSID'] = csid messages.append("relations REST API post succeeded...") return mediaElements
def uploadmedia(mediaElements, config, http_parms): if 'blobCSID' in mediaElements: uri = 'media' xobjectCSID = '' messages = [] #messages.append("posting to media REST API...") payload = makePayload(media_payload, mediaElements, http_parms.institution) (url, data, mediaCSID, elapsedtime) = postxml('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) messages.append('mediacsid %s elapsedtime %s ' % (mediaCSID, elapsedtime)) mediaElements['mediaCSID'] = mediaCSID # for PAHMA, each uploaded image becomes the primary, in turn # i.e. the last image in a set of images for the same object becomes the primary if http_parms.institution == 'pahma': primary_payload = """<?xml version="1.0" encoding="utf-8" standalone="yes"?> <ns2:invocationContext xmlns:ns2="http://collectionspace.org/services/common/invocable" <mode>single</mode> <docType>""" + mediaCSID + """</docType> <singleCSID></singleCSID> </ns2:invocationContext> """ try: # don't try to do this step for now, until we get it straightened out... pass # postxml('POST', 'batch/563d0999-d29e-4888-b58d', http_parms.realm, http_parms.server, http_parms.username, http_parms.password, primary_payload) except: print("batch job to set primary image failed.") # create a 'skeletal' accession (object) record if requested elif mediaElements['handling'] == 'media+create+accession': payload = makePayload(object_payload, mediaElements, http_parms.institution) try: (url, data, xobjectCSID, elapsedtime) = postxml('POST', 'collectionobjects', http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) except: print("Failed to create skeletal object record for.") else: pass # are we supposed to try to link this media record to a collectionobject? if mediaElements['handling'] in 'slide borndigital mediaonly'.split( ' '): mediaElements['objectCSID'] = 'N/A: %s' % mediaElements['handling'] else: # try to relate media record to collection object if needed if mediaElements['handling'] == 'media+create+accession': objectCSID = xobjectCSID else: objectCSID = getCSID('objectnumber', mediaElements['objectnumber'], config) objectCSID = objectCSID[0] if objectCSID == [] or objectCSID is None: print("could not get (i.e. find) objectnumber's csid: %s." % mediaElements['objectnumber']) mediaElements['objectCSID'] = 'not found' # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) else: mediaElements['objectCSID'] = objectCSID uri = 'relations' #messages.append("posting media2obj to relations REST API...") mediaElements['objectCsid'] = objectCSID mediaElements['subjectCsid'] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID mediaElements['objectDocumentType'] = 'CollectionObject' mediaElements['subjectDocumentType'] = 'Media' payload = relationsPayload(mediaElements) (url, data, csid, elapsedtime) = postxml('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) # elapsedtimetotal += elapsedtime messages.append('relation media2obj csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['media2objCSID'] = csid #messages.append("relations REST API post succeeded...") # reverse the roles #messages.append("posting obj2media to relations REST API...") temp = mediaElements['objectCsid'] mediaElements['objectCsid'] = mediaElements['subjectCsid'] mediaElements['subjectCsid'] = temp mediaElements['objectDocumentType'] = 'Media' mediaElements['subjectDocumentType'] = 'CollectionObject' payload = relationsPayload(mediaElements) (url, data, csid, elapsedtime) = postxml('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) messages.append('relation obj2media csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['obj2mediaCSID'] = csid #messages.append("relations REST API post succeeded...") for m in messages: print(" %s" % m) return mediaElements
def uploadmedia(mediaElements, config, http_parms): if 'blobCSID' in mediaElements: uri = 'media' messages = [] #messages.append("posting to media REST API...") payload = mediaPayload(mediaElements, http_parms.institution) (url, data, mediaCSID, elapsedtime) = postxml('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) # elapsedtimetotal += elapsedtime messages.append('mediacsid %s elapsedtime %s ' % (mediaCSID, elapsedtime)) mediaElements['mediaCSID'] = mediaCSID #messages.append("media REST API post succeeded...") # for PAHMA, each uploaded image becomes the primary, in turn # i.e. the last image in a set of images for the same object becomes the primary if http_parms.institution == 'pahma': primary_payload = """<?xml version="1.0" encoding="utf-8" standalone="yes"?> <ns2:invocationContext xmlns:ns2="http://collectionspace.org/services/common/invocable" <mode>single</mode> <docType>""" + mediaCSID + """</docType> <singleCSID></singleCSID> </ns2:invocationContext> """ try: # don't try to do this step for now, until we get it straightened out... pass # postxml('POST', 'batch/563d0999-d29e-4888-b58d', http_parms.realm, http_parms.server, http_parms.username, http_parms.password, primary_payload) except: print "batch job to set primary image failed." else: pass # are we supposed to try to link this media record to a collectionobject? if mediaElements['handling'] in 'slide borndigital mediaonly'.split(' '): mediaElements['objectCSID'] = 'N/A: %s' % mediaElements['handling'] else: # try to relate media record to collection object if needed objectCSID = getCSID('objectnumber', mediaElements['objectnumber'], config) if objectCSID == [] or objectCSID is None: print "could not get (i.e. find) objectnumber's csid: %s." % mediaElements['objectnumber'] mediaElements['objectCSID'] = 'not found' # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) else: objectCSID = objectCSID[0] mediaElements['objectCSID'] = objectCSID uri = 'relations' #messages.append("posting media2obj to relations REST API...") mediaElements['objectCsid'] = objectCSID mediaElements['subjectCsid'] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID mediaElements['objectDocumentType'] = 'CollectionObject' mediaElements['subjectDocumentType'] = 'Media' payload = relationsPayload(mediaElements) (url, data, csid, elapsedtime) = postxml('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) # elapsedtimetotal += elapsedtime messages.append('relation media2obj csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['media2objCSID'] = csid #messages.append("relations REST API post succeeded...") # reverse the roles #messages.append("posting obj2media to relations REST API...") temp = mediaElements['objectCsid'] mediaElements['objectCsid'] = mediaElements['subjectCsid'] mediaElements['subjectCsid'] = temp mediaElements['objectDocumentType'] = 'Media' mediaElements['subjectDocumentType'] = 'CollectionObject' payload = relationsPayload(mediaElements) (url, data, csid, elapsedtime) = postxml('POST', uri, http_parms.realm, http_parms.server, http_parms.username, http_parms.password, payload) #elapsedtimetotal += elapsedtime messages.append('relation obj2media csid %s elapsedtime %s ' % (csid, elapsedtime)) mediaElements['obj2mediaCSID'] = csid #messages.append("relations REST API post succeeded...") for m in messages: print " %s" % m return mediaElements
def uploadmedia(mediaElements, config): try: realm = config.get("connect", "realm") hostname = config.get("connect", "hostname") username = config.get("connect", "username") password = config.get("connect", "password") institution = config.get("info", "institution") alwayscreatemedia = config.get("info", "alwayscreatemedia") except: print "could not get at least one of realm, hostname, username, password or institution from config file." # print "can't continue, exiting..." raise objectCSID = getCSID("objectnumber", mediaElements["objectnumber"], config) if objectCSID == [] or objectCSID is None: print "could not get (i.e. find) objectnumber's csid: %s." % mediaElements["objectnumber"] mediaElements["objectCSID"] = "" # raise Exception("<span style='color:red'>Object Number not found: %s!</span>" % mediaElements['objectnumber']) # raise else: objectCSID = objectCSID[0] mediaElements["objectCSID"] = objectCSID if alwayscreatemedia or objectCSID is not None: updateItems = { "objectStatus": "found", "subjectCsid": "", "objectCsid": mediaElements["objectCSID"], "objectNumber": mediaElements["objectnumber"], "imageNumber": mediaElements["imagenumber"], "blobCsid": mediaElements["blobCSID"], "name": mediaElements["name"], "rightsHolderRefname": mediaElements["rightsholder"], "contributor": mediaElements["contributor"], "creator": mediaElements["creator"], "mediaDate": mediaElements["date"], } uri = "media" messages = [] messages.append("posting to media REST API...") # print updateItems payload = mediaPayload(updateItems, institution) messages.append(payload) (url, data, mediaCSID, elapsedtime) = postxml("POST", uri, realm, hostname, username, password, payload) # elapsedtimetotal += elapsedtime messages.append("got mediacsid %s elapsedtime %s " % (mediaCSID, elapsedtime)) mediaElements["mediaCSID"] = mediaCSID messages.append("media REST API post succeeded...") # for PAHMA, each uploaded image becomes the primary if institution == "pahma": primary_payload = ( """<?xml version="1.0" encoding="utf-8" standalone="yes"?> <ns2:invocationContext xmlns:ns2="http://collectionspace.org/services/common/invocable" <mode>single</mode> <docType>""" + mediaCSID + """</docType> <singleCSID></singleCSID> </ns2:invocationContext> """ ) postxml("POST", "batch/57c6de27-4f1e-48d3-a661", realm, hostname, username, password, primary_payload) else: pass if objectCSID is not None: # now relate media record to collection object uri = "relations" messages.append("posting media2obj to relations REST API...") updateItems["objectCsid"] = objectCSID updateItems["subjectCsid"] = mediaCSID # "urn:cspace:institution.cspace.berkeley.edu:media:id(%s)" % mediaCSID updateItems["objectDocumentType"] = "CollectionObject" updateItems["subjectDocumentType"] = "Media" payload = relationsPayload(updateItems) (url, data, csid, elapsedtime) = postxml("POST", uri, realm, hostname, username, password, payload) # elapsedtimetotal += elapsedtime messages.append("got relation csid %s elapsedtime %s " % (csid, elapsedtime)) mediaElements["media2objCSID"] = csid messages.append("relations REST API post succeeded...") # reverse the roles messages.append("posting obj2media to relations REST API...") temp = updateItems["objectCsid"] updateItems["objectCsid"] = updateItems["subjectCsid"] updateItems["subjectCsid"] = temp updateItems["objectDocumentType"] = "Media" updateItems["subjectDocumentType"] = "CollectionObject" payload = relationsPayload(updateItems) (url, data, csid, elapsedtime) = postxml("POST", uri, realm, hostname, username, password, payload) # elapsedtimetotal += elapsedtime messages.append("got relation csid %s elapsedtime %s " % (csid, elapsedtime)) mediaElements["obj2mediaCSID"] = csid messages.append("relations REST API post succeeded...") return mediaElements