Use the persistent id from the url regardless whether it's a DOI or not

pull/739/head
Kacper Kowalik (Xarthisius) 2019-09-16 14:24:31 -05:00
rodzic 14b758d327
commit 30375d13df
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 5D21B852895192F9
1 zmienionych plików z 9 dodań i 5 usunięć

Wyświetl plik

@ -3,11 +3,11 @@ import json
import shutil
from urllib.request import Request
from urllib.parse import urlparse, urlunparse
from urllib.parse import urlparse, urlunparse, parse_qs
from zipfile import ZipFile
from .doi import DoiProvider
from ..utils import copytree, deep_get, is_doi, normalize_doi
from ..utils import copytree, deep_get
class Dataverse(DoiProvider):
@ -42,6 +42,7 @@ class Dataverse(DoiProvider):
# Parse the url, to get the base for later API calls
parsed_url = urlparse(url)
query_args = parse_qs(parsed_url.query)
# Corner case handling
if parsed_url.path.startswith("/file.xhtml"):
@ -72,8 +73,11 @@ class Dataverse(DoiProvider):
return
self.record_id = deep_get(data, "items.0.dataset_persistent_id")
elif is_doi(doi):
self.record_id = "doi:" + normalize_doi(doi)
elif (
parsed_url.path.startswith("/dataset.xhtml")
and "persistentId" in query_args
):
self.record_id = deep_get(query_args, "persistentId.0")
if hasattr(self, "record_id"):
return {"record": self.record_id, "host": host}
@ -127,5 +131,5 @@ class Dataverse(DoiProvider):
@property
def content_id(self):
"""The Dataverse persistent identifier (could use internal dataset_id too)."""
"""The Dataverse persistent identifier."""
return self.record_id