From aba6bcfe450cdfd91917d217b1459821a2574061 Mon Sep 17 00:00:00 2001 From: Parth Date: Fri, 20 Feb 2026 23:55:13 +0530 Subject: [PATCH] Fix: Prevent 500 error when generating data file for restored cases without run directory - Ensure res// is created before writing data.txt - Add defensive os.makedirs(dataFilePath.parent, exist_ok=True) - Improve route error handling for OSError and unexpected exceptions - Resolves internal server error when restored case metadata exists but run directory was never created --- API/Classes/Case/DataFileClass.py | 2 ++ API/Routes/DataFile/DataFileRoute.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/API/Classes/Case/DataFileClass.py b/API/Classes/Case/DataFileClass.py index 74ea88e8..5ba1cf6f 100644 --- a/API/Classes/Case/DataFileClass.py +++ b/API/Classes/Case/DataFileClass.py @@ -724,6 +724,8 @@ def generateDatafile( self, caserunname ): dataFilePath = Path(Config.DATA_STORAGE, self.case, 'res',caserunname,'data.txt') + # Ensure case run directory exists (may be missing after restore) + os.makedirs(dataFilePath.parent, exist_ok=True) # self.f = open(self.dataFile, mode="w", encoding='utf-8') #self.f = open(dataFilePath, mode="w", encoding='utf-8') diff --git a/API/Routes/DataFile/DataFileRoute.py b/API/Routes/DataFile/DataFileRoute.py index 33709c09..8f618add 100644 --- a/API/Routes/DataFile/DataFileRoute.py +++ b/API/Routes/DataFile/DataFileRoute.py @@ -22,6 +22,10 @@ def generateDataFile(): return jsonify(response), 200 except(IOError): return jsonify('No existing cases!'), 404 + except OSError as e: + return jsonify({'message': f'File system error: {str(e)}', 'status_code': 'error'}), 500 + except Exception as e: + return jsonify({'message': f'Error generating data file: {str(e)}', 'status_code': 'error'}), 500 @datafile_api.route("/createCaseRun", methods=['POST']) def createCaseRun():