From 15dc8aa3d46a6dd59355ab400dcd96bf4858ac91 Mon Sep 17 00:00:00 2001
From: vermeul <swen@ethz.ch>
Date: Thu, 7 Feb 2019 17:51:20 +0100
Subject: [PATCH] changed all send_error to self.write({ }) JSON messages. If a
 sample or datasSet was not found, status is set to 404.

---
 jupyter-openbis-extension/server.py | 77 +++++++++++++++--------------
 1 file changed, 41 insertions(+), 36 deletions(-)

diff --git a/jupyter-openbis-extension/server.py b/jupyter-openbis-extension/server.py
index 086bffa..ec0ef7f 100644
--- a/jupyter-openbis-extension/server.py
+++ b/jupyter-openbis-extension/server.py
@@ -197,17 +197,18 @@ class SampleHandler(IPythonHandler):
             try:
                 conn.reconnect()
             except Exception as exc:
-                print(exc)
-                self.send_error(
-                    reason = 'connection to {} could not be established: {}'.format(conn.name, exc)
-                )
+                self.write({
+                    "reason" : 'connection to {} could not be established: {}'.format(conn.name, exc)
+                })
 
         sample = None
         try:
             sample = conn.openbis.get_sample(permId)
         except Exception as exc:
-            print(exc) 
-            self.send_error( reason = 'No such sample: {}'.format(permId) )
+            self.set_status(404)
+            self.write({
+                "reason" : 'No such sample: {}'.format(permId)
+            })
         if sample is None:
             return
 
@@ -223,9 +224,11 @@ class SampleHandler(IPythonHandler):
         try:
             conn = openbis_connections[params['connection_name']]
         except KeyError:
-            self.send_error(
-                reason = 'connection {} was not found'.format(params['connection_name'])
-            )
+            self.write({
+                "reason" : 'connection {} was not found'.format(
+                    params['connection_name']
+                )
+            })
         
         datasets = self.get_datasets(conn, params['permId'])
         if datasets is not None:
@@ -245,26 +248,27 @@ class DataSetDownloadHandler(IPythonHandler):
             try:
                 conn.reconnect()
             except Exception as exc:
-                self.send_error(
-                    reason = 'connection to {} could not be established: {}'.format(conn.name, exc)
-                )
+                self.write({
+                    "reason" : 'connection to {} could not be established: {}'.format(conn.name, exc)
+                })
                 return
 
         try:
             dataset = conn.openbis.get_dataset(permId)
         except Exception as exc:
-            self.send_error(
-                reason = 'No such dataSet found: {}'.format(permId)
-            )
+            self.set_status(404)
+            self.write({
+                "reason" : 'No such dataSet found: {}'.format(permId)
+            })
             return
 
         # dataset was found, download the data to the disk
         try: 
             destination = dataset.download(destination=downloadPath)
         except Exception as exc:
-            self.send_error(
-                reason = 'Data for DataSet {} could not be downloaded: {}'.format(permId, exc)
-            )
+            self.write({
+                "reason": 'Data for DataSet {} could not be downloaded: {}'.format(permId, exc)
+            })
             return
             
         # return success message
@@ -286,9 +290,9 @@ class DataSetDownloadHandler(IPythonHandler):
         try:
             conn = openbis_connections[params['connection_name']]
         except KeyError:
-            self.send_error(
-                reason = 'connection {} was not found'.format(params['connection_name'])
-            )
+            self.write({
+                "reason":'connection {} was not found'.format(params['connection_name'])
+            })
             return
         
         results = self.download_data(conn=conn, permId=params['permId'], downloadPath=params['downloadPath'])
@@ -303,17 +307,18 @@ class DataSetUploadHandler(IPythonHandler):
             try:
                 conn.reconnect()
             except Exception as exc:
-                self.send_error(
-                    reason = 'connection to {} could not be established: {}'.format(conn.name, exc)
-                )
+                self.write({
+                    "reason": 'connection to {} could not be established: {}'.format(conn.name, exc)
+                })
                 return
 
         try:
             sample = conn.openbis.get_sample(data.get('sampleIdentifier'))
         except Exception as exc:
-            self.send_error(
-                reason = 'No such sample found: {}'.format(data.get('sampleIdentifier'))
-            )
+            self.set_status(404)
+            self.write({
+                "reason" : 'No such sample: {}'.format(data.get('sampleIdentifier'))
+            })
             return
 
         filenames = []
@@ -330,17 +335,17 @@ class DataSetUploadHandler(IPythonHandler):
                 files       = filenames
             ) 
         except Exception as exc:
-            self.send_error(
-                reason = 'Error while creating the dataset: {}'.format(exc)
-            )
+            self.write({
+                "reason": 'Error while creating the dataset: {}'.format(exc)
+            })
             return
 
         try:
             ds.save()
         except Exception as exc:
-            self.send_error(
-                reason = 'Error while saving the dataset: {}'.format(exc)
-            )
+            self.write({
+                "reason": 'Error while saving the dataset: {}'.format(exc)
+            })
             return
         
             
@@ -358,9 +363,9 @@ class DataSetUploadHandler(IPythonHandler):
         try:
             conn = openbis_connections[params['connection_name']]
         except KeyError:
-            self.send_error(
-                reason = 'connection {} was not found'.format(params['connection_name'])
-            )
+            self.write({
+                "reason": 'connection {} was not found'.format(params['connection_name'])
+            })
             return
 
         data = self.get_json_body()
-- 
GitLab