diff --git a/services/workflow/workflow/server.py b/services/workflow/workflow/server.py index 0757efa34cc39d031a8437984325a8529d48a469..a3c3e3712d9e8281727c1da9738d57029cd370c9 100644 --- a/services/workflow/workflow/server.py +++ b/services/workflow/workflow/server.py @@ -17,6 +17,7 @@ # along with Workspaces. If not, see <https://www.gnu.org/licenses/>. # pylint: disable=E0401 """ This is our workflow server API. """ +import glob import http import json import logging @@ -183,31 +184,31 @@ class WorkflowWorkingDirRestService: def get_qa_notes(self): requested_workflow = self.request.info.lookup_workflow_request(self.request.matchdict["request_id"]) results_path = requested_workflow.results_dir - paths = [] - for root, dirs, _ in os.walk(results_path, followlinks=True): - for d in dirs: - if d.startswith("pipeline-"): - paths.append(os.path.join(root, d)) - qa_notes_path = paths[0] + "/html/qa_notes.html" - qa_notes_text = "" + # qa notes need the products directory weblog + path = glob.glob(results_path + "/products/pipeline-*/html")[0] + qa_notes_path = path + "/qa_notes.html" - with open(qa_notes_path, "r") as qa_notes: - qa_notes_text = qa_notes.read() + if Path(qa_notes_path).exists(): + qa_notes_text = "" + with open(qa_notes_path, "r") as qa_notes: + qa_notes_text = qa_notes.read() - return Response(status_int=http.HTTPStatus.OK, json_body={"resp": f"{qa_notes_text}"}) + return Response(status_int=http.HTTPStatus.OK, json_body={"resp": f"{qa_notes_text}"}) + + return Response( + status_int=http.HTTPStatus.NOT_FOUND, + json_body={"resp": "QA Notes file not found. Please close the window and try again."}, + ) @view_config(request_method="POST", route_name="get_qa_notes", renderer="json") def save_qa_notes(self): requested_workflow = self.request.info.lookup_workflow_request(self.request.matchdict["request_id"]) results_path = requested_workflow.results_dir - paths = [] - for root, dirs, _ in os.walk(results_path, followlinks=True): - for d in dirs: - if d.startswith("pipeline-"): - paths.append(os.path.join(root, d)) - qa_notes_path = paths[0] + "/html/qa_notes.html" + # qa notes need the products directory weblog + path = glob.glob(results_path + "/products/pipeline-*/html")[0] + qa_notes_path = path + "/qa_notes.html" with open(qa_notes_path, "w") as qa_notes: # sanitize input before writing/persisting