Source code for inspirehep.modules.hal.core.tei

# -*- coding: utf-8 -*-
#
# This file is part of INSPIRE.
# Copyright (C) 2014-2017 CERN.
#
# INSPIRE is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# INSPIRE is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with INSPIRE. If not, see <http://www.gnu.org/licenses/>.
#
# In applying this license, CERN does not waive the privileges and immunities
# granted to it by virtue of its status as an Intergovernmental Organization
# or submit itself to any jurisdiction.

"""HAL TEI core."""

from __future__ import absolute_import, division, print_function

from flask import render_template
from langdetect import detect
from langdetect.lang_detect_exception import LangDetectException

from inspirehep.utils.record import (
    get_abstract,
    get_arxiv_id,
    get_collaborations,
    get_keywords,
    get_subtitle,
    get_title,
)

from ..utils import (
    get_authors,
    get_conference_city,
    get_conference_country,
    get_conference_end_date,
    get_conference_record,
    get_conference_start_date,
    get_conference_title,
    get_divulgation,
    get_document_types,
    get_doi,
    get_domains,
    get_inspire_id,
    get_journal_issue,
    get_journal_title,
    get_journal_volume,
    get_language,
    get_page_artid,
    get_peer_reviewed,
    get_publication_date,
    is_published,
)


[docs]def convert_to_tei(record): """Return the record formatted in XML+TEI per HAL's specification. Args: record(InspireRecord): a record. Returns: string: the record formatted in XML+TEI. Examples: >>> record = get_db_record('lit', 1407506) >>> convert_to_tei(record) <?xml version="1.0" encoding="UTF-8"?> ... """ if _is_comm(record): ctx = _get_comm_context(record) return render_template('hal/comm.xml', **ctx) elif _is_art(record): ctx = _get_art_context(record) return render_template('hal/art.xml', **ctx) elif _is_preprint(record): ctx = _get_preprint_context(record) return render_template('hal/preprint.xml', **ctx) raise NotImplementedError
def _is_comm(record): document_types = get_document_types(record) return 'conference paper' in document_types def _get_comm_context(record): abstract = get_abstract(record) try: abstract_language = detect(abstract) except LangDetectException: abstract_language = '' conference_record = get_conference_record(record) conference_city = get_conference_city(conference_record) conference_country = get_conference_country(conference_record) conference_end_date = get_conference_end_date(conference_record) conference_start_date = get_conference_start_date(conference_record) conference_title = get_conference_title(conference_record) return { 'abstract': abstract, 'abstract_language': abstract_language, 'arxiv_id': get_arxiv_id(record), 'authors': get_authors(record), 'collaborations': get_collaborations(record), 'conference_city': conference_city, 'conference_country': conference_country, 'conference_end_date': conference_end_date, 'conference_start_date': conference_start_date, 'conference_title': conference_title, 'divulgation': get_divulgation(record), 'doi': get_doi(record), 'domains': get_domains(record), 'inspire_id': get_inspire_id(record), 'journal_issue': get_journal_issue(record), 'journal_title': get_journal_title(record), 'journal_volume': get_journal_volume(record), 'keywords': get_keywords(record), 'language': get_language(record), 'page_artid': get_page_artid(record), 'peer_reviewed': get_peer_reviewed(record), 'publication_date': get_publication_date(record), 'subtitle': get_subtitle(record), 'title': get_title(record), } def _is_art(record): document_types = get_document_types(record) published = is_published(record) return 'article' in document_types and published def _get_art_context(record): abstract = get_abstract(record) try: abstract_language = detect(abstract) except LangDetectException: abstract_language = '' return { 'abstract': abstract, 'abstract_language': abstract_language, 'arxiv_id': get_arxiv_id(record), 'authors': get_authors(record), 'collaborations': get_collaborations(record), 'divulgation': get_divulgation(record), 'doi': get_doi(record), 'domains': get_domains(record), 'inspire_id': get_inspire_id(record), 'journal_issue': get_journal_issue(record), 'journal_title': get_journal_title(record), 'journal_volume': get_journal_volume(record), 'keywords': get_keywords(record), 'language': get_language(record), 'page_artid': get_page_artid(record), 'peer_reviewed': get_peer_reviewed(record), 'publication_date': get_publication_date(record), 'subtitle': get_subtitle(record), 'title': get_title(record), } def _is_preprint(record): document_types = get_document_types(record) return 'article' in document_types def _get_preprint_context(record): abstract = get_abstract(record) try: abstract_language = detect(abstract) except LangDetectException: abstract_language = '' return { 'abstract': abstract, 'abstract_language': abstract_language, 'arxiv_id': get_arxiv_id(record), 'authors': get_authors(record), 'collaborations': get_collaborations(record), 'divulgation': get_divulgation(record), 'domains': get_domains(record), 'inspire_id': get_inspire_id(record), 'keywords': get_keywords(record), 'language': get_language(record), 'subtitle': get_subtitle(record), 'title': get_title(record), }