Example #1
0
def getrecord(**kwargs):
    """Create OAI-PMH response for verb Identify."""
    def get_error_code_msg():
        code = "noRecordsMatch"
        msg = "The combination of the values of the from, until, " \
              "set and metadataPrefix arguments results in an empty list."
        return [(code, msg)]

    record_dumper = serializer(kwargs['metadataPrefix'])
    pid = OAIIDProvider.get(pid_value=kwargs['identifier']).pid
    # record = Record.get_record(pid.object_uuid)

    identify = OaiIdentify.get_all()
    harvest_public_state, record = WekoRecord.get_record_with_hps(
        pid.object_uuid)
    if (identify and not identify.outPutSetting) or not harvest_public_state:
        return error(get_error_code_msg(), **kwargs)

    e_tree, e_getrecord = verb(**kwargs)
    e_record = SubElement(e_getrecord, etree.QName(NS_OAIPMH, 'record'))

    header(
        e_record,
        identifier=pid.pid_value,
        datestamp=record.updated,
        sets=record.get('_oai', {}).get('sets', []),
    )
    e_metadata = SubElement(e_record, etree.QName(NS_OAIPMH, 'metadata'))
    e_metadata.append(record_dumper(pid, {'_source': record}))

    return e_tree
Example #2
0
def getrecord(**kwargs):
    """Create OAI-PMH response for verb Identify."""
    def get_error_code_msg():
        """Get error by type."""
        code = current_app.config.get('OAISERVER_CODE_NO_RECORDS_MATCH')
        msg = current_app.config.get('OAISERVER_MESSAGE_NO_RECORDS_MATCH')
        return [(code, msg)]

    record_dumper = serializer(kwargs['metadataPrefix'])
    pid = OAIIDProvider.get(pid_value=kwargs['identifier']).pid

    identify = OaiIdentify.get_all()
    harvest_public_state, record = WekoRecord.get_record_with_hps(
        pid.object_uuid)

    e_tree, e_getrecord = verb(**kwargs)
    e_record = SubElement(e_getrecord, etree.QName(NS_OAIPMH, 'record'))
    set_identifier(record, record)
    # Harvest is private
    _is_private_index = is_private_index(record)
    if not harvest_public_state or\
            (identify and not identify.outPutSetting) or \
            (_is_private_index
                and harvest_public_state and is_exists_doi(record)):
        return error(get_error_code_msg(), **kwargs)
    # Item is deleted
    # or Harvest is public & Item is private
    # or Harvest is public & Index is private
    elif is_deleted_workflow(pid) or (harvest_public_state
                                      and is_private_workflow(record)) or (
                                          harvest_public_state
                                          and _is_private_index):
        header(e_record,
               identifier=pid.pid_value,
               datestamp=record.updated,
               sets=record.get('_oai', {}).get('sets', []),
               deleted=True)
        return e_tree

    header(
        e_record,
        identifier=pid.pid_value,
        datestamp=record.updated,
        sets=record.get('_oai', {}).get('sets', []),
    )
    e_metadata = SubElement(e_record, etree.QName(NS_OAIPMH, 'metadata'))

    etree_record = copy.deepcopy(record)

    if not etree_record.get('system_identifier_doi', None):
        etree_record['system_identifier_doi'] = get_identifier(record)

    # Merge licensetype and licensefree
    etree_record = handle_license_free(etree_record)

    root = record_dumper(pid, {'_source': etree_record})

    e_metadata.append(root)
    return e_tree
Example #3
0
def getrecord(**kwargs):
    """Create OAI-PMH response for verb Identify."""
    def get_error_code_msg():
        code = 'noRecordsMatch'
        msg = 'The combination of the values of the from, until, ' \
              'set and metadataPrefix arguments results in an empty list.'
        return [(code, msg)]

    record_dumper = serializer(kwargs['metadataPrefix'])
    pid = OAIIDProvider.get(pid_value=kwargs['identifier']).pid
    # record = Record.get_record(pid.object_uuid)

    identify = OaiIdentify.get_all()
    harvest_public_state, record = WekoRecord.get_record_with_hps(
        pid.object_uuid)
    if (identify and not identify.outPutSetting) or not harvest_public_state:
        return error(get_error_code_msg(), **kwargs)

    e_tree, e_getrecord = verb(**kwargs)
    e_record = SubElement(e_getrecord, etree.QName(NS_OAIPMH, 'record'))

    header(
        e_record,
        identifier=pid.pid_value,
        datestamp=record.updated,
        sets=record.get('_oai', {}).get('sets', []),
    )
    e_metadata = SubElement(e_record, etree.QName(NS_OAIPMH, 'metadata'))

    etree_record = copy.deepcopy(record)
    if check_correct_system_props_mapping(
            pid.object_uuid,
            current_app.config.get('OAISERVER_SYSTEM_FILE_MAPPING')):
        etree_record = combine_record_file_urls(etree_record, pid.object_uuid)

    root = record_dumper(pid, {'_source': etree_record})

    if check_correct_system_props_mapping(
            pid.object_uuid,
            current_app.config.get('OAISERVER_SYSTEM_IDENTIFIER_MAPPING')):
        if record.pid_doi:
            root = create_identifier_index(root,
                                           pid_type=record.pid_doi.pid_type,
                                           pid_value=record.pid_doi.pid_value)
        if record.pid_cnri:
            root = create_identifier_index(root,
                                           pid_type=record.pid_cnri.pid_type,
                                           pid_value=record.pid_cnri.pid_value)

    e_metadata.append(root)
    return e_tree