feat: Enhance get_records_directory function to support optional config_manager for dynamic path retrieval

This commit is contained in:
Miguel 2025-08-27 10:30:28 +02:00
parent 01489aec59
commit 29b6e92284
1 changed files with 26 additions and 12 deletions

38
main.py
View File

@ -160,15 +160,25 @@ def project_path(*parts: str) -> str:
return os.path.join(base_dir, *parts)
def get_records_directory():
"""Get the correct records directory path for both development and PyInstaller exe"""
if getattr(sys, "frozen", False):
# Running as PyInstaller executable - records should be next to the exe
executable_dir = os.path.dirname(sys.executable)
return os.path.join(executable_dir, "records")
def get_records_directory(config_manager=None):
"""Get the correct records directory path for dev and PyInstaller exe
Args:
config_manager: Optional ConfigManager instance to read records_directory
from config. If not provided, defaults to 'records' subdir
"""
if config_manager:
# Use configured records directory (can be relative or absolute)
return config_manager.get_csv_directory_path()
else:
# Running as script - use current directory
return os.path.join(os.path.dirname(__file__), "records")
# Fallback behavior for when config_manager is not available
if getattr(sys, "frozen", False):
# Running as PyInstaller executable - records should be next to the exe
executable_dir = os.path.dirname(sys.executable)
return os.path.join(executable_dir, "records")
else:
# Running as script - use current directory
return os.path.join(os.path.dirname(__file__), "records")
# React build directory (for Vite production build)
@ -2096,7 +2106,8 @@ def get_historical_data():
return jsonify({"error": f"Time calculation failed: {str(e)}"}), 500
# Get relevant CSV files for cache checking
records_dir = get_records_directory()
config_mgr = streamer.config_manager if streamer else None
records_dir = get_records_directory(config_mgr)
csv_files = []
if os.path.exists(records_dir):
@ -2438,7 +2449,8 @@ def get_historical_date_range():
import glob
# Get records directory
records_dir = get_records_directory()
config_mgr = streamer.config_manager if streamer else None
records_dir = get_records_directory(config_mgr)
if not os.path.exists(records_dir):
return (
@ -2573,7 +2585,8 @@ def get_historical_data_segments():
try:
import glob
records_dir = get_records_directory()
config_mgr = streamer.config_manager if streamer else None
records_dir = get_records_directory(config_mgr)
if not os.path.exists(records_dir):
return (
@ -3826,7 +3839,8 @@ def process_symbol_variables():
def get_csv_files():
"""Get structured list of CSV files organized by dataset, date, and hour"""
try:
records_dir = get_records_directory()
config_mgr = streamer.config_manager if streamer else None
records_dir = get_records_directory(config_mgr)
if not os.path.exists(records_dir):
return jsonify({"files": [], "tree": []})