diff --git a/site/cds_rdm/schemes.py b/site/cds_rdm/schemes.py index 81f939ce..45ab06dc 100644 --- a/site/cds_rdm/schemes.py +++ b/site/cds_rdm/schemes.py @@ -99,7 +99,9 @@ def is_inspire_author(val): def generate_inspire_url(scheme, value): """Generate a URL for a given Inspire identifier or conference ID.""" if is_inspire_conference(value): - return f"https://inspirehep.net/literature/?q={value}" + return ( + f"https://inspirehep.net/conferences?q=cnum:{value}&start_date=all" + ) return f"https://inspirehep.net/literature/{value}" diff --git a/site/cds_rdm/views.py b/site/cds_rdm/views.py index 2b3c92ac..37fbfba7 100644 --- a/site/cds_rdm/views.py +++ b/site/cds_rdm/views.py @@ -15,7 +15,7 @@ from invenio_communities import current_communities from invenio_i18n import _ -from .schemes import legacy_cds_pattern +from .schemes import generate_inspire_url, legacy_cds_pattern blueprint = Blueprint("cds-rdm_ext", __name__) @@ -61,7 +61,7 @@ def inspire_link_render(record): for rel_value in inspire_rel_ids: ret.append( dump_external_resource( - f"https://inspirehep.net/literature/{rel_value}", + generate_inspire_url("inspire", rel_value), title="INSPIRE", section=_("Indexed in"), icon=url_for("static", filename="images/inspire_logo.png"), diff --git a/site/tests/test_views.py b/site/tests/test_views.py index ba54c8b4..26d8242c 100644 --- a/site/tests/test_views.py +++ b/site/tests/test_views.py @@ -19,6 +19,7 @@ SearchFieldTransformer, ) +from cds_rdm.schemes import generate_inspire_url from cds_rdm.views import get_linked_records_search_query SEARCH_ALIAS_MAPPING = { @@ -638,4 +639,22 @@ def test_search_alias_returns_record( assert result.total == 1 hit_ids = [hit["id"] for hit in result.hits] - assert record.id in hit_ids \ No newline at end of file + assert record.id in hit_ids + + +def test_generate_inspire_url_conference_uses_cnum_without_quotes(): + """Conference CNUM links to conferences search, not quoted literature q=.""" + url = generate_inspire_url("inspire", "C97-04-14") + assert ( + url + == "https://inspirehep.net/conferences?q=cnum:C97-04-14&start_date=all" + ) + assert '"' not in url + + +def test_generate_inspire_url_literature_record(): + """Numeric INSPIRE ids keep the literature record URL.""" + assert ( + generate_inspire_url("inspire", "446220") + == "https://inspirehep.net/literature/446220" + )