From 4f1149ff075829315c100c47da8058515221ce3d Mon Sep 17 00:00:00 2001
From: Daniel <daniel@harvey>
Date: Tue, 24 Nov 2020 10:11:57 +0100
Subject: [PATCH] ENH: More useful error message if debug mode is disabled.

---
 src/caosdb/common/administration.py | 16 +++++++++++-----
 src/caosdb/exceptions.py            |  7 +++++++
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/caosdb/common/administration.py b/src/caosdb/common/administration.py
index 7997088a..e2846ef1 100644
--- a/src/caosdb/common/administration.py
+++ b/src/caosdb/common/administration.py
@@ -31,7 +31,7 @@ from lxml import etree
 from caosdb.common.utils import xml2str
 from caosdb.connection.connection import get_connection
 from caosdb.exceptions import (AuthorizationException, ClientErrorException,
-                               EntityDoesNotExistError)
+                               EntityDoesNotExistError, ServerConfigurationException)
 
 
 def set_server_property(key, value):
@@ -52,9 +52,11 @@ def set_server_property(key, value):
     None
     """
     con = get_connection()
-
-    con._form_data_request(method="POST", path="_server_properties",
-                           params={key: value}).read()
+    try:
+        con._form_data_request(method="POST", path="_server_properties",
+                               params={key: value}).read()
+    except EntityDoesNotExistError:
+        raise ServerConfigurationException("Debug mode in server is probably disabled.") from None
 
 
 def get_server_properties():
@@ -68,7 +70,11 @@ def get_server_properties():
         The server properties.
     """
     con = get_connection()
-    body = con._http_request(method="GET", path="_server_properties").response
+    try:
+        body = con._http_request(method="GET", path="_server_properties").response
+    except EntityDoesNotExistError:
+        raise ServerConfigurationException("Debug mode in server is probably disabled.") from None
+
     xml = etree.parse(body)
     props = dict()
 
diff --git a/src/caosdb/exceptions.py b/src/caosdb/exceptions.py
index 5763bef4..c406ad96 100644
--- a/src/caosdb/exceptions.py
+++ b/src/caosdb/exceptions.py
@@ -60,6 +60,13 @@ class ConfigurationException(CaosDBException):
              ".pycaosdb.ini. Do at least one of them exist and are they correct?")
 
 
+class ServerConfigurationException(CaosDBException):
+    """The server is configured in a different way than expected.
+
+    This can be for example unexpected flags or settings or missing extensions.
+    """
+
+
 class ClientErrorException(CaosDBException):
     def __init__(self, msg, status, body):
         self.status = status
-- 
GitLab