Exemplo n.º 1
0
def _get_or_create_identifiers(node):
    """
    Note: ARKs include a leading slash. This is stripped here to avoid multiple
    consecutive slashes in internal URLs (e.g. /ids/ark/<ark>/). Frontend code
    that build ARK URLs is responsible for adding the leading slash.
    """
    doi, metadata = _build_ezid_metadata(node)
    client = EzidClient(settings.EZID_USERNAME, settings.EZID_PASSWORD)
    try:
        resp = client.create_identifier(doi, metadata)
        return dict([each.strip('/') for each in pair.strip().split(':')]
                    for pair in resp['success'].split('|'))
    except HTTPError as error:
        if 'identifier already exists' not in error.message.lower():
            raise
        resp = client.get_identifier(doi)
        doi = resp['success']
        suffix = doi.strip(settings.DOI_NAMESPACE)
        return {
            'doi':
            doi.replace('doi:', ''),
            'ark':
            '{0}{1}'.format(settings.ARK_NAMESPACE.replace('ark:', ''),
                            suffix),
        }
Exemplo n.º 2
0
def _get_or_create_identifiers(node):
    """
    Note: ARKs include a leading slash. This is stripped here to avoid multiple
    consecutive slashes in internal URLs (e.g. /ids/ark/<ark>/). Frontend code
    that build ARK URLs is responsible for adding the leading slash.
    """
    doi, metadata = _build_ezid_metadata(node)
    client = EzidClient(settings.EZID_USERNAME, settings.EZID_PASSWORD)
    try:
        resp = client.create_identifier(doi, metadata)
        return dict([each.strip("/") for each in pair.strip().split(":")] for pair in resp["success"].split("|"))
    except HTTPError as error:
        if "identifier already exists" not in error.message.lower():
            raise
        resp = client.get_identifier(doi)
        doi = resp["success"]
        suffix = doi.strip(settings.DOI_NAMESPACE)
        return {
            "doi": doi.replace("doi:", ""),
            "ark": "{0}{1}".format(settings.ARK_NAMESPACE.replace("ark:", ""), suffix),
        }
Exemplo n.º 3
0
def osf_admin_change_status_identifier(node, status):
    if node.get_identifier_value('doi') and node.get_identifier_value('ark'):
        doi, metadata = build_ezid_metadata(node)
        client = EzidClient(settings.EZID_USERNAME, settings.EZID_PASSWORD)
        client.change_status_identifier(status, doi, metadata)
Exemplo n.º 4
0
def osf_admin_change_status_identifier(node, status):
    if node.get_identifier_value('doi') and node.get_identifier_value('ark'):
        doi, metadata = build_ezid_metadata(node)
        client = EzidClient(settings.EZID_USERNAME, settings.EZID_PASSWORD)
        client.change_status_identifier(status, doi, metadata)
Exemplo n.º 5
0
def get_ezid_client():
    from website.identifiers.client import EzidClient

    return EzidClient(settings.EZID_USERNAME, settings.EZID_PASSWORD)