kopia lustrzana https://github.com/jupyterhub/repo2docker
Use the persistent id from the url regardless whether it's a DOI or not
rodzic
14b758d327
commit
30375d13df
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue