diff --git a/invenio.cfg b/invenio.cfg index fb6689cc..006881a2 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -577,6 +577,11 @@ RDM_RECORDS_RELATED_IDENTIFIERS_SCHEMES = { "validator": schemes.is_edms, "datacite": "EDMS" }, + "atom": { + "label": _("ATOM"), + "validator": schemes.is_atom, + "datacite": "ATOM", + }, "hal": { "label": "HAL", "validator": schemes.is_hal, diff --git a/site/cds_rdm/schemes.py b/site/cds_rdm/schemes.py index 93f5c847..042a47ab 100644 --- a/site/cds_rdm/schemes.py +++ b/site/cds_rdm/schemes.py @@ -24,6 +24,12 @@ is_indico_regexp = re.compile(r"^[a-zA-Z0-9]+$", flags=re.I) inis_pattern = re.compile(r"^(?:\d+|RN:\d+)$", flags=re.I) edms_pattern = re.compile(r"^\d+$", flags=re.I) +atom_pattern = re.compile(r"^[a-z0-9][a-z0-9-]*$", flags=re.I) + + +def is_atom(val): + """Test if argument matches an AtoM slug/permalink segment.""" + return atom_pattern.match(str(val).strip()) def is_aleph(val):