Skip to content

Commit

Permalink
Merge pull request #502 from NBISweden/bugfix/fix-doesnotexist-except…
Browse files Browse the repository at this point in the history
…ions

Fixes exceptions due to DoesNotExist when looking up dataset versions
  • Loading branch information
viklund committed Jan 10, 2019
2 parents 946d2d0 + 14bd5d4 commit 66e4c32
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 9 deletions.
15 changes: 15 additions & 0 deletions backend/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,10 @@ def get(self):

try:
dataset_version = db.get_dataset_version(dataset, version)
if dataset_version is None:
self.send_error(status_code=404)
return


if dataset_version.available_from > datetime.now():
# If it's not available yet, only return if user is admin.
Expand Down Expand Up @@ -163,6 +167,9 @@ def get(self, dataset, version=None):
future_version = False

version = db.get_dataset_version(dataset, version)
if version is None:
self.send_error(status_code=404)
return

if version.available_from > datetime.now():
future_version = True
Expand Down Expand Up @@ -216,6 +223,10 @@ class GenerateTemporaryLink(handlers.AuthorizedHandler):
def post(self, dataset, version=None):
user = self.current_user
dataset_version = db.get_dataset_version(dataset, version)
if dataset_version is None:
self.send_error(status_code=404)
return

lh = db.Linkhash.create(
user = user,
dataset_version = dataset_version,
Expand All @@ -240,6 +251,10 @@ def post(self, dataset, version=None):
class DatasetFiles(handlers.AuthorizedHandler):
def get(self, dataset, version=None):
dataset_version = db.get_dataset_version(dataset, version)
if dataset_version is None:
self.send_error(status_code=404)
return

ret = []
for f in dataset_version.files:
d = db.build_dict_from_row(f)
Expand Down
29 changes: 20 additions & 9 deletions backend/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
TextField,
fn,
)
import logging
import settings

database = MySQLDatabase(
Expand Down Expand Up @@ -295,16 +296,26 @@ def get_dataset(dataset):

def get_dataset_version(dataset, version=None):
if version:
dataset_version = (DatasetVersion
.select(DatasetVersion, Dataset)
.join(Dataset)
.where(DatasetVersion.version == version,
Dataset.short_name == dataset)).get()
try:
dataset_version = (DatasetVersion
.select(DatasetVersion, Dataset)
.join(Dataset)
.where(DatasetVersion.version == version,
Dataset.short_name == dataset)).get()
except DatasetVersion.DoesNotExist:
logging.error("get_dataset_version({}, {}): ".format(dataset, version) +
"cannot retrieve dataset version")
return
else:
dataset_version = (DatasetVersionCurrent
.select(DatasetVersionCurrent, Dataset)
.join(Dataset)
.where(Dataset.short_name == dataset)).get()
try:
dataset_version = (DatasetVersionCurrent
.select(DatasetVersionCurrent, Dataset)
.join(Dataset)
.where(Dataset.short_name == dataset)).get()
except DatasetVersionCurrent.DoesNotExist:
logging.error("get_dataset_version({}, version=None): ".format(dataset) +
"cannot retrieve dataset version")
return
return dataset_version


Expand Down

0 comments on commit 66e4c32

Please sign in to comment.