From 3cd6d31731ad0c22e1a132e352beacac9859c4b3 Mon Sep 17 00:00:00 2001
From: Theophile Terraz <theophile.terraz@inrae.fr>
Date: Tue, 28 Jan 2025 10:04:12 +0100
Subject: [PATCH] debug windows paths

---
 src/Model/Results/ResultsAdisTS.py |  5 +++--
 src/Solver/AdisTS.py               | 25 ++++++++++++++++---------
 src/View/MainWindow.py             | 12 ++++++++++--
 src/View/RunSolver/WindowAdisTS.py |  8 +++++++-
 4 files changed, 36 insertions(+), 14 deletions(-)

diff --git a/src/Model/Results/ResultsAdisTS.py b/src/Model/Results/ResultsAdisTS.py
index e7bdcc06..f8a8585a 100644
--- a/src/Model/Results/ResultsAdisTS.py
+++ b/src/Model/Results/ResultsAdisTS.py
@@ -40,8 +40,9 @@ class Results(object):
             # Keep results creation date
             "creation_date": datetime.now(),
         }
-        repertory_results = os.path.join(repertory, "resultats")
-        filelist = [f for f in os.listdir(repertory_results) if os.path.isfile(os.path.join(repertory_results, f))]
+        filelist = [f for f in os.listdir(self._repertory)
+                    if os.path.isfile(os.path.join(self._repertory, f))
+                    ]
         self._pollutants_list = [f[0:-4] for f in filelist if f[-4:] == ".bin"]
         self._pollutants_list.insert(0, self._pollutants_list.pop(
             self._pollutants_list.index("total_sediment"))
diff --git a/src/Solver/AdisTS.py b/src/Solver/AdisTS.py
index 4578a23e..75f4d7b0 100644
--- a/src/Solver/AdisTS.py
+++ b/src/Solver/AdisTS.py
@@ -619,14 +619,15 @@ class AdisTSwc(AdisTS):
     @timer
     def read_bin(self, study, repertory, results, qlog=None, name="0"):
 
-        repertory_results = os.path.join(repertory, "resultats")
-        filelist = [f for f in os.listdir(repertory_results) if os.path.isfile(os.path.join(repertory_results, f))]
+        filelist = [f for f in os.listdir(repertory)
+                    if os.path.isfile(os.path.join(repertory, f))
+                    ]
         files_bin_names = [f for f in filelist if f[-4:] == ".bin"]
         files_bin_names.insert(0, files_bin_names.pop(
             files_bin_names.index("total_sediment.bin"))
         )
 
-        ifilename = os.path.join(repertory_results, files_bin_names[0])
+        ifilename = os.path.join(repertory, files_bin_names[0])
 
         logger.info(f"read_bin: Start reading '{ifilename}' ...")
 
@@ -723,7 +724,7 @@ class AdisTSwc(AdisTS):
         def ip_to_ri(r, i): return i - reach_offset[r]
 
         path_files = map(lambda file: os.path.join(
-            repertory_results, file), files_bin_names)
+            repertory, file), files_bin_names)
 
         data_tmp = {}
 
@@ -831,8 +832,6 @@ class AdisTSwc(AdisTS):
         if name is None:
             name = study.name.replace(" ", "_")
 
-        print("adist ts results repertory: ", repertory)
-
         results = super(AdisTSwc, self).results(study,
                                                 repertory,
                                                 qlog,
@@ -850,12 +849,20 @@ class AdisTSwc(AdisTS):
 
     def rm_previous_results(self, study, repertory, qlog):
 
-        if "resultats" not in os.listdir(repertory):
+        if "resultats" in os.listdir(repertory):
+            repertory_results = os.path.join(repertory, "resultats")
+        else:
+            repertory_results = os.path.normpath(repertory)
+
+        if not os.path.isdir(repertory_results):
             return
 
-        repertory_results = os.path.join(repertory, "resultats")
-        filelist = [f for f in os.listdir(repertory_results) if os.path.isfile(os.path.join(repertory_results, f))]
+        filelist = [f for f in os.listdir(repertory_results)
+                    if os.path.isfile(os.path.join(repertory_results, f))
+                    ]
         files_bin_names = [f for f in filelist if f[-4:] == ".bin"]
+        if len(files_bin_names) < 1:
+            return
 
         for el in files_bin_names:
             os.remove(os.path.join(repertory_results, el))
diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index 3fe55953..0a455d60 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -1581,13 +1581,21 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         if dialog.exec_():
             dir_path = dialog.selectedFiles()[0]
             dir_list = os.listdir(dir_path)
+            if "resultats" in dir_list:
+                dir_path = os.path.join(dir_path, "resultats")
+                dir_list = os.listdir(dir_path)
+
             bin_list = list(filter(lambda s: "bin" in s, dir_list))
-            solver_name = dir_path.split("/")[-2]
+            if len(bin_list) < 1:
+                # TODO message
+                return
+            path = os.path.normpath(dir_path)
+            solver_name = path.split(os.sep)[-2]
             solver_results = next(filter(lambda x: x.name == solver_name,
                                          self.conf.solvers))
             solver_results_adists = solver_results.results(
                 self._study,
-                repertory=dir_path[:-10], qlog=None)  # self._output)
+                repertory=dir_path, qlog=None)  # self._output)
             logger.info(f"Select results: {dir_path}")
             if len(bin_list) >= 2 and ("total_sediment.bin" in bin_list):
                 self.open_solver_results_adists(
diff --git a/src/View/RunSolver/WindowAdisTS.py b/src/View/RunSolver/WindowAdisTS.py
index 4ed9c783..168937c7 100644
--- a/src/View/RunSolver/WindowAdisTS.py
+++ b/src/View/RunSolver/WindowAdisTS.py
@@ -414,9 +414,15 @@ class SolverLogWindowAdisTS(PamhyrWindow):
 
     def results(self):
         if self._results is None:
+            dir_list = os.listdir(self._workdir)
+            if "resultats" in dir_list:
+                dir_path = os.path.join(self._workdir, "resultats")
+            else:
+                dir_path = self._workdir
+
             def reading_fn():
                 self._results = self._solver.results(
-                    self._study, self._workdir, qlog=self._output
+                    self._study, dir_path, qlog=self._output
                 )
 
             dlg = ReadingResultsDialog(reading_fn=reading_fn, parent=self)
-- 
GitLab