Ejemplo n.º 1
0
            mods_file_path = os.path.join(source_directory, 'mods', mods_file)
            mods_file_handle = open(mods_file_path)
            mods_contents = mods_file_handle.read()
           
            #get map_label from mods title
            mods_tree = etree.parse(mods_file_path)
            map_label = mods_tree.xpath("*[local-name() = 'titleInfo']/*[local-name() = 'title']/text()")
            map_label = map_label[0]
            if len(map_label) > 255:
                map_label = map_label[0:250] + '...'
            #print(map_label)
            map_label = unicode(map_label)
            map_name = mods_tree.xpath("*[local-name() = 'identifier']/text()")[0].strip("\t\n\r")           
 
            #create a map object
            map_pid = fedora.getNextPID(name_space)
	    map_object = fedora.createObject(map_pid, label = map_label)
	    print(map_pid)

	    #add mods datastream
            
            mods_file_handle.close()
            try:
                map_object.addDataStream(u'MODS', unicode(mods_contents), label = u'MODS',
                mimeType = u'text/xml', controlGroup = u'X',
                logMessage = u'Added basic mods meta data.')
                logging.info('Added MODS datastream to:' + map_pid)
            except FedoraConnectionException:
                logging.error('Error in adding MODS datastream to:' + map_pid + '\n')

            #add fits datastream
            mods_file_handle = open(mods_file_path)
            mods_contents = mods_file_handle.read()

            #get book_label from mods title
            mods_tree = etree.parse(mods_file_path)
            book_label = mods_tree.xpath(
                "*[local-name() = 'titleInfo']/*[local-name() = 'title']/text()"
            )
            book_label = book_label[0]
            if len(book_label) > 255:
                book_label = book_label[0:250] + '...'
            print(book_label)
            book_label = unicode(book_label)

            #create a book object
            book_pid = fedora.getNextPID(name_space)
            book_object = fedora.createObject(book_pid, label=book_label)

            #add mods datastream
            mods_file_handle.close()
            try:
                book_object.addDataStream(
                    u'MODS',
                    unicode(mods_contents),
                    label=u'MODS',
                    mimeType=u'text/xml',
                    controlGroup=u'X',
                    logMessage=u'Added basic mods meta data.')
                logging.info('Added MODS datastream to:' + book_pid)
            except FedoraConnectionException:
                logging.error('Error in adding MODS datastream to:' +
Ejemplo n.º 3
0
            mods_contents = mods_file_handle.read()
            
            #get letter_label from mods title
            parser = etree.XMLParser(encoding='utf-8')
            mods_tree = etree.parse(mods_file_path, parser)
            letter_label = mods_tree.xpath("*[local-name() = 'titleInfo']/*[local-name() = 'title']/text()")
            letter_label = letter_label[0].strip("\t\n\r")
            if type(letter_label) is str:
                letter_label = letter_label.decode('utf-8')
            letter_label = letter_label.encode('ascii', 'xmlcharrefreplace').decode('utf-8')
            if len(letter_label) > 255:
                letter_label = letter_label[0:250] + '...'
            letter_label = unicode(letter_label)           
 
            #create a letter object
            letter_pid = fedora.getNextPID(name_space)
            letter_object = fedora.createObject(letter_pid, label = letter_label)
            print(letter_pid)           
 
            #add mods datastream
            mods_file_handle.close()
            try:
                letter_object.addDataStream(u'MODS', mods_contents.decode('utf-8'), label = u'MODS',
                mimeType = u'text/xml', controlGroup = u'X',
                logMessage = u'Added basic mods meta data.')
                logging.info('Added MODS datastream to:' + letter_pid)
            except FedoraConnectionException:
                logging.error('Error in adding MODS datastream to:' + letter_pid + '\n')
            
            #letter name
            letter_name = mods_tree.xpath("*[local-name() = 'identifier']/text()")[0].strip("\t\n\r") 
    except FedoraConnectionException, object_fetch_exception:
        if object_fetch_exception.httpcode in [404]:
            logging.info('islandora:BenshiMovie missing, creating object.\n')
            model_object = fedora.createObject(model_pid,
                                               label=u'BenshiMovieCModel')
            #add relationships
            model_object_RELS_EXT = fedora_relationships.rels_ext(
                model_object, fedora_model_namespace)
            model_object_RELS_EXT.addRelationship(
                fedora_relationships.rels_predicate('fedora-model',
                                                    'hasModel'),
                'fedora-system:ContentModel-3.0')
            model_object_RELS_EXT.update()

    movie_name = mods_file_name[:mods_file_name.find('-')]
    movie_pid = fedora.getNextPID(name_space)
    benshi_pid = fedora.getNextPID(name_space)

    movie_label = unicode(movie_name)
    movie_object = fedora.createObject(movie_pid, label=movie_label)
    #add relationships
    movie_object_RELS_EXT = fedora_relationships.rels_ext(
        movie_object, fedora_model_namespace)
    movie_object_RELS_EXT.addRelationship('isMemberOf', collection_pid)
    movie_object_RELS_EXT.addRelationship(
        fedora_relationships.rels_predicate('fedora-model', 'hasModel'),
        model_pid)
    movie_object_RELS_EXT.update()

    benshi_label = unicode(movie_name + ' Benshi')
    benshi_object = fedora.createObject(benshi_pid, label=benshi_label)
 #put in the benshi Islandora:BenshiMovie content model
 try:
     model_pid = u'islandora:benshiMovie'
     fedora.getObject(model_pid)
 except FedoraConnectionException, object_fetch_exception:
     if object_fetch_exception.httpcode in [404]:
         logging.info('islandora:BenshiMovie missing, creating object.\n')
         model_object = fedora.createObject(model_pid, label = u'BenshiMovieCModel')
         #add relationships
         model_object_RELS_EXT=fedora_relationships.rels_ext(model_object,fedora_model_namespace)
         model_object_RELS_EXT.addRelationship(fedora_relationships.rels_predicate('fedora-model','hasModel'),'fedora-system:ContentModel-3.0')
         model_object_RELS_EXT.update()
 
 
 movie_name = mods_file_name[:mods_file_name.find('-')]
 movie_pid = fedora.getNextPID(name_space)
 benshi_pid = fedora.getNextPID(name_space)
 
 movie_label=unicode(movie_name)
 movie_object = fedora.createObject(movie_pid, label = movie_label)
 #add relationships
 movie_object_RELS_EXT=fedora_relationships.rels_ext(movie_object,fedora_model_namespace)
 movie_object_RELS_EXT.addRelationship('isMemberOf', collection_pid)
 movie_object_RELS_EXT.addRelationship(fedora_relationships.rels_predicate('fedora-model','hasModel'), model_pid)
 movie_object_RELS_EXT.update()
 
 benshi_label=unicode(movie_name + ' Benshi')
 benshi_object = fedora.createObject(benshi_pid, label = benshi_label)
 #add relationships
 benshi_object_RELS_EXT=fedora_relationships.rels_ext(benshi_object,[hamilton_rdf_name_space, fedora_model_namespace])
 benshi_object_RELS_EXT.addRelationship(fedora_relationships.rels_predicate('hamilton', 'isBenshiOf'), movie_pid)