From 158494cd67ad5d364f7bbbdd0b41bdbf354acdfc Mon Sep 17 00:00:00 2001 From: alejandromumo Date: Fri, 9 Feb 2024 14:26:06 +0100 Subject: [PATCH] openaire: url encode funding fields. --- .../zenodo_rdm/openaire/serializers/schema.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/site/zenodo_rdm/openaire/serializers/schema.py b/site/zenodo_rdm/openaire/serializers/schema.py index fae8a317..2fd86454 100644 --- a/site/zenodo_rdm/openaire/serializers/schema.py +++ b/site/zenodo_rdm/openaire/serializers/schema.py @@ -10,7 +10,7 @@ from invenio_communities.proxies import current_communities from marshmallow import Schema, fields, missing, pre_dump from zenodo_legacy.funders import FUNDER_ACRONYMS, FUNDER_ROR_TO_DOI - +from urllib.parse import quote_plus from zenodo_rdm.openaire.utils import ( get_resource_type_vocabulary, openaire_datasource_id, @@ -193,17 +193,14 @@ def _reverse_funder_acronym(funder_ror): funder = grant.get("funder", {}) if funder and award: funder_ror = funder.get("id") - funder_acronym = _reverse_funder_acronym(funder_ror) - award_program = award.get("program", "") - award_number = award.get("number", "") - award_title = award.get("title", {}).get("en") - award_acronym = award.get("acronym", "") + # url-encode the fields + funder_acronym = quote_plus(_reverse_funder_acronym(funder_ror)) + award_program = quote_plus(award.get("program", "")) + award_number = quote_plus(award.get("number", "")) + award_title = quote_plus(award.get("title", {}).get("en", "")) + award_acronym = quote_plus(award.get("acronym", "")) if funder_acronym and award_program and award_number: - b_link = f"info:eu-repo/grantAgreement/{funder_acronym}/{award_program}/{award_number}" - if award_title: - b_link += f"/{award_title}" - if award_acronym: - b_link += f"/{award_acronym}" + b_link = f"info:eu-repo/grantAgreement/{funder_acronym}/{award_program}/{award_number}{award_title}{award_acronym}" links.append(b_link) return links or missing