def test_make_author_handles_none_in_id_schema():
    schema = load_schema('hep')
    subschema = schema['properties']['authors']
    builder = LiteratureBuilder()

    result = builder.make_author(
        'Smith, John',
        ids=[(None, 'J.Smith.1')],
    )
    expected = {
        'full_name': 'Smith, John',
    }

    assert validate([result], subschema) is None
    assert expected == result
Esempio n. 2
0
def test_make_author_sets_record():
    schema = load_schema('hep')
    subschema = schema['properties']['authors']
    builder = LiteratureBuilder()
    author_record = {'$ref': 'http://url/api/authors/1234'}
    result = builder.make_author(
        'Smith, John',
        record=author_record,
    )
    expected = {
        'full_name': 'Smith, John',
        'record': author_record,
    }

    assert validate([result], subschema) is None
    assert expected == result
Esempio n. 3
0
def test_make_author():
    schema = load_schema('hep')
    subschema = schema['properties']['authors']
    builder = LiteratureBuilder()

    result = builder.make_author(
        'Smith, John',
        affiliations=['CERN', 'SLAC'],
        source='submitter',
        raw_affiliations=['CERN, 1211 Geneva', 'SLAC, Stanford'],
        emails=['*****@*****.**'],
        ids=[('INSPIRE BAI', 'J.Smith.1')],
        alternative_names=['Johnny Smith']
    )
    expected = {
        'full_name': 'Smith, John',
        'affiliations': [
            {'value': 'CERN'},
            {'value': 'SLAC'},
        ],
        'raw_affiliations': [
            {
                'value': 'CERN, 1211 Geneva',
                'source': 'submitter'
            },
            {
                'value': 'SLAC, Stanford',
                'source': 'submitter',
            }
        ],
        'emails': ['*****@*****.**'],
        'ids': [
            {
                'schema': 'INSPIRE BAI',
                'value': 'J.Smith.1',
            }
        ],
        'alternative_names': ['Johnny Smith'],
    }

    assert validate([result], subschema) is None
    assert expected == result
Esempio n. 4
0
    def build_literature(self, data):
        literature = LiteratureBuilder()

        literature.add_document_type(data["document_type"])

        literature.add_arxiv_eprint(data.get("arxiv_id"),
                                    data.get("arxiv_categories"))
        literature.add_preprint_date(data.get("preprint_date"))
        literature.add_doi(data.get("doi"))

        pdf_link = data.get("pdf_link")
        additional_link = data.get("additional_link")
        if pdf_link and "arxiv.org" not in pdf_link:
            literature.add_url(data.get("pdf_link"))
        if additional_link and "arxiv.org" not in additional_link:
            literature.add_url(data.get("additional_link"))

        literature.add_title(data["title"], source="submitter")

        language = data.get("language")
        literature.add_language(language if language != "en" else None)

        literature.add_inspire_categories(data.get("subjects"))

        for author in data.get("authors", []):
            record_author = literature.make_author(
                author.get("full_name"),
                record=author.get("record"),
                affiliations=[author.get("affiliation")
                              ],  # TODO: use `affiliation_record`
            )
            literature.add_author(record_author)

        literature.add_collaboration(data.get("collaboration"))

        literature.add_accelerator_experiment(
            data.get("experiment"), record=data.get("experiment_record"))
        # TODO: source=submitter?
        literature.add_abstract(data.get("abstract"), source="submitter")

        for report_number in data.get("report_numbers", []):
            literature.add_report_number(report_number, source="submitter")

        page_start, page_end, artid = split_page_artid(data.get("page_range"))

        literature.add_publication_info(
            journal_title=data.get("journal_title"),
            journal_volume=data.get("volume"),
            journal_issue=data.get("issue"),
            journal_record=data.get("journal_record"),
            conference_record=data.get("conference_record"),
            artid=artid,
            page_start=data.get("start_page") or page_start,
            page_end=data.get("end_page") or page_end,
            year=data.get("year"),
            parent_record=data.get("parent_book_record"),
        )

        literature.add_book_series(data.get("series_title"))

        literature.add_book(
            date=data.get("publication_date"),
            publisher=data.get("publisher"),
            place=data.get("publication_place"),
        )

        literature.add_thesis(
            defense_date=data.get("defense_date"),
            degree_type=data.get("degree_type"),
            institution=data.get("institution"),
            date=data.get("submission_date"),
        )

        for supervisor in data.get("supervisors", []):
            record_supervisor = literature.make_author(
                supervisor.get("full_name"),
                affiliations=[supervisor.get("affiliation")],
                roles=["supervisor"],
            )
            literature.add_author(record_supervisor)

        literature.add_private_note(data.get("comments"), source="submitter")
        literature.add_private_note(data.get("proceedings_info"),
                                    source="submitter")

        if data.get("conference_record") is None:
            literature.add_private_note(data.get("conference_info"),
                                        source="submitter")

        return literature.record