Skip to content

Commit b2702d3

Browse files
committed
Catch error for retrieving JSON from unpublished dataset
1 parent b6f9e03 commit b2702d3

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

dataverse/dataset.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from exceptions import (
99
MethodNotAllowedError, NoContainerError, OperationFailedError,
10-
ConnectionError, MetadataNotFoundError
10+
ConnectionError, MetadataNotFoundError, UnpublishedDatasetError
1111
)
1212
from file import DataverseFile
1313
from settings import SWORD_BOOTSTRAP
@@ -203,7 +203,9 @@ def get_json(self, refresh=False):
203203

204204
resp = requests.get(json_url, params={'key': self.connection.token})
205205

206-
if resp.status_code != 200:
206+
if resp.status_code == 404:
207+
raise UnpublishedDatasetError('JSON metadata cannot be retried for an unpublished dataset.')
208+
elif resp.status_code != 200:
207209
raise ConnectionError('JSON metadata could not be retrieved.')
208210

209211
self._json = resp.json()['data']
@@ -227,8 +229,11 @@ def get_files(self, published=False, refresh=True):
227229
for element in elements]
228230

229231
def get_published_files(self, refresh=True):
230-
return [DataverseFile.from_json(self, file_json)
231-
for file_json in self.get_json(refresh)['files']]
232+
try:
233+
return [DataverseFile.from_json(self, file_json)
234+
for file_json in self.get_json(refresh)['files']]
235+
except UnpublishedDatasetError:
236+
return []
232237

233238
def add_file(self, filepath):
234239
self.add_files([filepath])

dataverse/exceptions.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@ class OperationFailedError(DataverseError):
3232
"""Raised when an operation fails for an unknown reason"""
3333
pass
3434

35+
3536
class MetadataNotFoundError(DataverseError):
3637
"""Raised when metadata cannot be found for an unknown reason"""
38+
pass
39+
40+
41+
class UnpublishedDataverseError(DataverseError):
42+
"""Raised when a request requires that a Dataverse first be published"""
43+
pass
44+
45+
46+
class UnpublishedDatasetError(DataverseError):
47+
"""Raised when a request requires that a dataset first be published"""
3748
pass

0 commit comments

Comments
 (0)