def curation_ticket_context(user, obj): recid = obj.extra_data.get('recid') record_url = obj.extra_data.get('url') arxiv_ids = get_value(obj.data, 'arxiv_eprints.value') or [] for index, arxiv_id in enumerate(arxiv_ids): if arxiv_id and is_arxiv_post_2007(arxiv_id): arxiv_ids[index] = 'arXiv:{0}'.format(arxiv_id) report_numbers = get_value(obj.data, 'report_numbers.value') or [] dois = [ "doi:{0}".format(doi) for doi in get_value(obj.data, 'dois.value') or [] ] link_to_pdf = obj.extra_data.get('formdata', {}).get('url') subject = ' '.join( filter(lambda x: x is not None, arxiv_ids + dois + report_numbers + ['(#{0})'.format(recid)])) references = obj.extra_data.get('formdata', {}).get('references') user_comment = obj.extra_data.get('formdata', {}).get('extra_comments', '') return dict(recid=recid, record_url=record_url, link_to_pdf=link_to_pdf, email=user.email if user else '', references=references, user_comment=user_comment, subject=subject)
def arxiv_eprints2marc(self, key, values): """Populate the ``037`` MARC field. Also populates the ``035`` and the ``65017`` MARC fields through side effects. """ result_037 = self.get('037', []) result_035 = self.get('035', []) result_65017 = self.get('65017', []) for value in values: arxiv_id = value.get('value') arxiv_id = 'arXiv:' + arxiv_id if is_arxiv_post_2007( arxiv_id) else arxiv_id result_037.append({ '9': 'arXiv', 'a': arxiv_id, 'c': force_single_element(value.get('categories')), }) result_035.append({ '9': 'arXiv', 'a': 'oai:arXiv.org:' + value.get('value'), }) categories = force_list(value.get('categories')) for category in categories: result_65017.append({ '2': 'arXiv', 'a': category, }) self['65017'] = result_65017 self['035'] = result_035 return result_037
def curation_ticket_context(user, obj): recid = obj.extra_data.get('recid') record_url = obj.extra_data.get('url') arxiv_ids = get_value(obj.data, 'arxiv_eprints.value') or [] for index, arxiv_id in enumerate(arxiv_ids): if arxiv_id and is_arxiv_post_2007(arxiv_id): arxiv_ids[index] = 'arXiv:{0}'.format(arxiv_id) report_numbers = get_value(obj.data, 'report_numbers.value') or [] dois = [ "doi:{0}".format(doi) for doi in get_value(obj.data, 'dois.value') or [] ] link_to_pdf = obj.extra_data.get('formdata', {}).get('url') subject = ' '.join(filter( lambda x: x is not None, arxiv_ids + dois + report_numbers + ['(#{0})'.format(recid)] )) references = obj.extra_data.get('formdata').get('references') user_comment = obj.extra_data.get('formdata', {}).get('extra_comments', '') return dict( recid=recid, record_url=record_url, link_to_pdf=link_to_pdf, email=user.email, references=references, user_comment=user_comment, subject=subject )
def references2marc(self, key, value): reference = value['reference'] pids = force_list(reference.get('persistent_identifiers')) a_values = ['doi:' + el for el in force_list(reference.get('dois'))] a_values.extend( ['hdl:' + el['value'] for el in pids if el.get('schema') == 'HDL']) a_values.extend( ['urn:' + el['value'] for el in pids if el.get('schema') == 'URN']) authors = force_list(reference.get('authors')) e_values = [ el['full_name'] for el in authors if el.get('inspire_role') == 'editor' ] h_values = [ el['full_name'] for el in authors if el.get('inspire_role') != 'editor' ] r_values = force_list(reference.get('report_numbers')) if reference.get('arxiv_eprint'): arxiv_eprint = reference['arxiv_eprint'] r_values.append( 'arXiv:' + arxiv_eprint if is_arxiv_post_2007(arxiv_eprint) else arxiv_eprint) journal_title = get_value(reference, 'publication_info.journal_title') journal_volume = get_value(reference, 'publication_info.journal_volume') page_start = get_value(reference, 'publication_info.page_start') page_end = get_value(reference, 'publication_info.page_end') artid = get_value(reference, 'publication_info.artid') s_value = build_pubnote(journal_title, journal_volume, page_start, page_end, artid) m_value = ' / '.join(force_list(reference.get('misc'))) return { '0': get_recid_from_ref(value.get('record')), 'a': a_values, 'b': get_value(reference, 'publication_info.cnum'), 'c': reference.get('collaborations'), 'e': e_values, 'h': h_values, 'i': reference.get('isbn'), 'k': reference.get('texkey'), 'm': m_value, 'o': reference.get('label'), 'p': get_value(reference, 'imprint.publisher'), 'q': get_value(reference, 'publication_info.parent_title'), 'r': r_values, 's': s_value, 't': get_value(reference, 'title.title'), 'u': get_value(reference, 'urls.value'), 'x': get_value(value, 'raw_refs.value'), 'y': get_value(reference, 'publication_info.year'), }
def arxiv_id(self, key, value): if is_arxiv_post_2007(value): arxiv_rep_number = {'value': 'arXiv:' + value} else: arxiv_rep_number = {'value': value} if len(value.split('/')) == 2: arxiv_rep_number['categories'] = value.split('/')[0] if 'arxiv_eprints' in self: self['arxiv_eprints'].append(arxiv_rep_number) else: self['arxiv_eprints'] = [arxiv_rep_number] raise IgnoreKey
def _normalize_arxiv(obj): """Return a normalized arXiv identfier. As in ``_is_arxiv``, we need to handle arXiv references as well as arXiv identifiers. We also need to return a simpler arXiv identifier than what ``idutils`` would output, so we use some of its helpers instead of ``normalize_arxiv``. """ obj = obj.split()[0] m = idutils.is_arxiv_pre_2007(obj) if m: return ''.join(m.group(2, 4, 5)) m = idutils.is_arxiv_post_2007(obj) if m: return '.'.join(m.group(2, 3))
def get_curation_body(template, metadata, email, extra_data): """ Get ticket content. Ticket used by curators to curate the given record. """ from idutils import is_arxiv_post_2007 recid = extra_data.get('recid') record_url = extra_data.get('url') arxiv_id = metadata.get('arxiv_id') if arxiv_id and is_arxiv_post_2007(arxiv_id): arxiv_id = ''.join(['arXiv:', arxiv_id]) report_number = metadata.get('report_numbers') if report_number: report_number = report_number[0].get('value') link_to_pdf = extra_data.get('submission_data').get('pdf') subject = ' '.join(filter(lambda x: x is not None, [arxiv_id, " ".join(["doi:{0}".format(d) for d in metadata.get('dois')]), report_number, '(#{0})'.format(recid)])) references = extra_data.get('submission_data').get('references') user_comment = extra_data.get('submission_data').get('extra_comments') body = render_template( template, recid=recid, record_url=record_url, link_to_pdf=link_to_pdf, email=email, references=references, user_comment=user_comment, ).strip() return subject, body
def get_curation_body(template, record, email, extra_data): """ Get ticket content. Ticket used by curators to curate the given record. """ from idutils import is_arxiv_post_2007 recid = extra_data.get('recid') record_url = extra_data.get('url') arxiv_ids = record.get('arxiv_eprints.value') for index, arxiv_id in enumerate(arxiv_ids): if arxiv_id and is_arxiv_post_2007(arxiv_id): arxiv_ids[index] = 'arXiv:{0}'.format(arxiv_id) report_numbers = record.get('report_numbers.value') dois = ["doi:{0}".format(record.get('dois.value'))] link_to_pdf = extra_data.get('submission_data').get('pdf') subject = ' '.join(filter( lambda x: x is not None, arxiv_ids + dois + report_numbers + ['(#{0})'.format(recid)] )) references = extra_data.get('submission_data').get('references') user_comment = extra_data.get('submission_data').get('extra_comments') body = render_template( template, recid=recid, record_url=record_url, link_to_pdf=link_to_pdf, email=email, references=references, user_comment=user_comment, ).strip() return subject, body
def conflicts_ticket_context(user, obj): server_name = current_app.config['SERVER_NAME'] workflow_id = obj.id arxiv_ids = get_value(obj.data, 'arxiv_eprints.value') or [] for index, arxiv_id in enumerate(arxiv_ids): if arxiv_id and is_arxiv_post_2007(arxiv_id): arxiv_ids[index] = 'arXiv:{0}'.format(arxiv_id) report_numbers = get_value(obj.data, 'report_numbers.value') or [] dois = [ "doi:{0}".format(doi) for doi in get_value(obj.data, 'dois.value') or [] ] recid = obj.extra_data.get('recid') subject = ' '.join( filter(lambda x: x is not None, arxiv_ids + dois + report_numbers + ['(#{0})'.format(recid)])) return dict(server_name=server_name, workflow_id=workflow_id, arxiv_ids=arxiv_ids, dois=dois, recid=recid, report_numbers=report_numbers, subject=subject)
def get_primary_class(data, doc_type): eprint = get_value(data, 'arxiv_eprints.value[0]') if eprint and is_arxiv_post_2007(eprint): return get_value(data, 'arxiv_eprints[0].categories[0]')
def references2marc(self, key, value): """Populate the ``999C5`` MARC field.""" reference = value.get('reference', {}) pids = force_list(reference.get('persistent_identifiers')) a_values = ['doi:' + el for el in force_list(reference.get('dois'))] a_values.extend( ['hdl:' + el['value'] for el in pids if el.get('schema') == 'HDL']) a_values.extend( ['urn:' + el['value'] for el in pids if el.get('schema') == 'URN']) external_ids = force_list(reference.get('external_system_identifiers')) u_values = force_list(get_value(reference, 'urls.value')) u_values.extend( CDS_RECORD_FORMAT.format(el['value']) for el in external_ids if el.get('schema') == 'CDS') u_values.extend( ADS_RECORD_FORMAT.format(el['value']) for el in external_ids if el.get('schema') == 'ADS') authors = force_list(reference.get('authors')) e_values = [ el['full_name'] for el in authors if el.get('inspire_role') == 'editor' ] h_values = [ el['full_name'] for el in authors if el.get('inspire_role') != 'editor' ] r_values = force_list(reference.get('report_numbers')) if reference.get('arxiv_eprint'): arxiv_eprint = reference['arxiv_eprint'] r_values.append( 'arXiv:' + arxiv_eprint if is_arxiv_post_2007(arxiv_eprint) else arxiv_eprint) if reference.get('publication_info'): reference['publication_info'] = convert_new_publication_info_to_old( [reference['publication_info']])[0] journal_title = get_value(reference, 'publication_info.journal_title') journal_volume = get_value(reference, 'publication_info.journal_volume') page_start = get_value(reference, 'publication_info.page_start') page_end = get_value(reference, 'publication_info.page_end') artid = get_value(reference, 'publication_info.artid') s_value = build_pubnote(journal_title, journal_volume, page_start, page_end, artid) m_value = ' / '.join(force_list(reference.get('misc'))) return { '0': get_recid_from_ref(value.get('record')), '9': 'CURATOR' if value.get('legacy_curated') else None, 'a': a_values, 'b': get_value(reference, 'publication_info.cnum'), 'c': reference.get('collaborations'), 'e': e_values, 'h': h_values, 'i': reference.get('isbn'), 'k': reference.get('texkey'), 'm': m_value, 'o': reference.get('label'), 'p': get_value(reference, 'imprint.publisher'), 'q': get_value(reference, 'publication_info.parent_title'), 'r': r_values, 's': s_value, 't': get_value(reference, 'title.title'), 'u': u_values, 'x': get_value(value, 'raw_refs.value'), 'y': get_value(reference, 'publication_info.year'), 'z': 1 if value.get('curated_relation') else 0, }
def get_primary_class(self, data): eprint = get_value(data, "arxiv_eprints.value[0]") if eprint and is_arxiv_post_2007(eprint): return get_value(data, "arxiv_eprints[0].categories[0]")