From 214c4a1cfd5d3670c8ae84f4965481a35e56556c Mon Sep 17 00:00:00 2001
From: Christopher Rhodes <christopher.rhodes@embl.de>
Date: Tue, 31 Oct 2023 11:31:25 +0100
Subject: [PATCH] Added setter to change one a session's data paths

---
 model_server/session.py | 10 ++++++++++
 tests/test_session.py   |  7 +++++++
 2 files changed, 17 insertions(+)

diff --git a/model_server/session.py b/model_server/session.py
index 3d5db0bc..15ee33f4 100644
--- a/model_server/session.py
+++ b/model_server/session.py
@@ -36,6 +36,13 @@ class Session(object):
     def get_paths(self):
         return self.paths
 
+    def set_data_directory(self, key: str, path: Path):
+        if not key in self.paths.keys():
+            raise InvalidPathError(f'No such path {key}')
+        if not Path(path).exists():
+            raise InvalidPathError(f'Could not find {path}')
+        self.paths[key] = path
+
     @staticmethod
     def make_paths(root: str = None) -> dict:
         """
@@ -143,4 +150,7 @@ class CouldNotInstantiateModelError(Error):
     pass
 
 class CouldNotCreateDirectory(Error):
+    pass
+
+class InvalidPathError(Error):
     pass
\ No newline at end of file
diff --git a/tests/test_session.py b/tests/test_session.py
index fd4b79c9..dee15d0e 100644
--- a/tests/test_session.py
+++ b/tests/test_session.py
@@ -28,6 +28,13 @@ class TestGetSessionObject(unittest.TestCase):
         rmtree(newroot)
         self.assertFalse(newroot.exists(), 'Could not clean up temporary test subdirectory')
 
+    def test_change_session_subdirectory(self):
+        sesh = Session()
+        old_paths = sesh.get_paths()
+        print(old_paths)
+        sesh.set_data_directory('outbound_images', old_paths['inbound_images'])
+        self.assertEqual(sesh.paths['outbound_images'], sesh.paths['inbound_images'])
+
 
     def test_restart_session(self):
         sesh = Session()
-- 
GitLab