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
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
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