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...")
        # 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
Example #3
0
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
Example #4
0
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'

        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
Example #6
0
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
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('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, 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('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.server, 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